这里我有一个名为“Something”的模型它有主键列ID,会自动生成id。
class Something:
id = models.AutoField(primary_key=true)
这将生成像 1,2,3
这样的整数但是,我想要“ someConst1 ”,“ someConst2 ”,“ someConst3 ”,这里 someConst 是永远不会改变的常数值。
有没有办法将某些文本与自动生成的ID连接?
答案 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)
请记住,在您第一次运行此操作时,它会引发异常,因为此表中没有任何记录。你可以这样添加。