[英]Generating a unique number if it is set as True django
I'm trying to get my program to generate this unique number if confirmed == True. 如果确认== 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
So, basically generate a po_number ONLY if confirmed == True. 所以,如果确认== True,基本上只生成一个po_number。 I've tried inserting the logic in random places, but it's generating errors. 我已经尝试在随机位置插入逻辑,但它会产生错误。 Where should I put it? 我应该把它放在哪里?
i think it could make sense to put it in the save
method: 我认为将它放在save
方法中是有意义的:
def save(self, *args, **kwargs):
if not self.pk and self.confirmed:
self.po_number = self.validPONumber()
super(PurchaseOrder, self).save(*args, **kwargs)
This would specify that a record must be new and confirmed == True
这将指定记录必须是新的并且confirmed == True
Do you want it only to be generated from new records? 您是否希望仅从新记录生成? Do you want the check to take place when you update a record? 您是否希望在更新记录时进行检查? if so you could set it for every time the save
method is called: 如果是这样,你可以在每次调用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.