[英]Generating a unique number if it is set as True django
如果确认== True,我正在尝试让我的程序生成这个唯一的数字。
class PurchaseOrder(models.Model):
po_number = models.IntegerField(unique=True)
confirmed = models.NullBooleanField(null=True)
def save(self, *args, **kwargs):
if not self.pk:
self.po_number = self.validPONumber()
super(PurchaseOrder, self).save(*args, **kwargs)
def validPONumber(self):
low= 50000
high =1000000
random.seed()
value = random.randrange(low, high)
while 0 < len(PurchaseOrder.objects.filter(po_number=value)):
value = random.randrange(low, high)
return value
所以,如果确认== True,基本上只生成一个po_number。 我已经尝试在随机位置插入逻辑,但它会产生错误。 我应该把它放在哪里?
我认为将它放在save
方法中是有意义的:
def save(self, *args, **kwargs):
if not self.pk and self.confirmed:
self.po_number = self.validPONumber()
super(PurchaseOrder, self).save(*args, **kwargs)
这将指定记录必须是新的并且confirmed == True
您是否希望仅从新记录生成? 您是否希望在更新记录时进行检查? 如果是这样,你可以在每次调用save
方法时设置它:
def save(self, *args, **kwargs):
if self.confirmed:
self.po_number = self.validPONumber()
super(PurchaseOrder, self).save(*args, **kwargs)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.