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