我有这个模型,在保存时自动生成发票号码。你知道吗
我的问题是:当我更新此模型表单中的任何字段时,将生成一个新的发票号。你知道吗
有什么办法我可以更新表格,保持原来的发票号码不变!!你知道吗
class sale(models.Model):
name = models.CharField(max_length=30,null=True)
contact = models.IntegerField(null=True)
email = models.EmailField(max_length=50,null=True)
Delivery_Date = models.DateField(null=True)
Delivery_time = models.CharField(max_length=80,null=True)
service = models.CharField(max_length=20,null=True)
Invoice_number = models.CharField(max_length=12,blank=True,unique=True)
def save(self, *args, **kwargs):
if self.service == 'Furniture':
x=randint(99,99999)
self.Invoice_number = str('Fur') + str(x)
elif self.service == 'Auto':
x=randint(99,99999)
self.Invoice_number = str('Auto') + str(x)
elif self.service == 'Groceries':
x=randint(99,99999)
self.Invoice_number = str('Gro') + str(x)
super(bookings_modelform,self).save()
您可以检查实例是否已经有发票号码,例如:
这就是说,您的方法很容易出错,因为偶尔会出现发票号冲突(因为随机数的性质),并且
save()
会失败,丢失发票。我建议你先检查一下以前是否用过那个发票号码。你知道吗您还调用了错误的
super
(它应该是sale
的超类,而不是bookings_modelform
),即:如果对象是新的,您可以签入模型的
save
方法,使用self.pk
并仅在这种情况下生成发票号:相关问题 更多 >
编程相关推荐