到目前为止,我具有此功能:
def my_number():
x = '0000'
return 'MY{0}'.format(str(int(x) + 1).zfill(len(x)))
我这样称呼:
number_seq = models.CharField(_("Ref."), unique=True, db_index=True,
default=my_number, null=True)
它可以工作,但是当我尝试保存新文档时,它只会创建一个新的MY0001
,并且应该像MY0002, MY0003
这样递增。
这可能是什么原因?
答案 0 :(得分:2)
我认为您应该声明一个AutoField
作为主键,而不是采用您的方法,并且可能有一个名为number_seq
的属性方法来获取该值以供参考。例如:
class SomeModel(models.Model):
your_pk = models.AutoField(primary_key=True)
@property
def number_seq(self):
return 'MY{0}'.format(str(self.your_pk).zfill(4))
但是您不能直接针对它运行查询,例如SomeModel.objects.filter(number_seq="MY001")
将不起作用。但是您可以执行以下操作以获取所需的对象。例如:
value = "MY001"
SomeModel.objects.get(pk=int(value[2:]))