0

在这里,我有一个名为“Something”的模型,它具有主键列 id,它将自动生成 id。

class Something:
    id = models.AutoField(primary_key=true)

这将生成像1,2,3这样的整数

但是,我想要像“ someConst1 ”、“ someConst2 ”、“ someConst3 ”这样的东西,这里someConst是永远不会改变的常数值。

有没有办法将一些文本与自动生成的 id 连接起来?

4

1 回答 1

0

默认情况下,djangoid = models.AutoField(primary_key=True)为每个模型添加一个。

您可以创建自己的 id 并设置此设置primary_key = True

参考:https ://docs.djangoproject.com/en/dev/topics/db/models/#automatic-primary-key-fields

一种方法是像这样覆盖保存方法:

class Xpto(models.Model):
    id = models.CharField(max_length=200, primary_key = True)
    autonum = models.IntegerField()
    def save(self, *args, **kwargs):
        last_autonum = Xpto.objects.all().order_by("-autonum")
        #Use this if just to add the first record, then use just last_autonum=last_autonum[0].autonum
        if last_autonum.count():
            last_autonum=last_autonum[0].autonum
        else:
            last_autonum = 0
        self.id = 'someConst%d' % (last_autonum + 1)
        self.autonum = last_autonum + 1
        super(Xpto,self).save(*args,**kwargs)

请记住,在您第一次运行它时,它会引发异常,因为您在此表中没有任何记录。你可以这样添加。

于 2013-07-18T19:43:39.290 回答