我可以用自动增量ID(主键)连接一些文本吗?

时间:2013-07-18 16:38:08

标签: django django-models django-forms django-templates django-views

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

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

这将生成像 1,2,3

这样的整数

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

有没有办法将某些文本与自动生成的ID连接?

1 个答案:

答案 0 :(得分:0)

默认情况下,django为每个模型添加id = 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)

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