我的发票上有一个django模型。
现在我需要为每天生成唯一的发票号码(在我的Django Views功能中)。
示例,2016年4月7日的发票编号如:16040701,16040702,16040703等。
如何实现这一目标?
答案 0 :(得分:0)
我会通过覆盖您的发票模型中的save()来完成此操作。首先,为您的模型添加发票编号字段:
invoice_id = models.CharField(blank=True, max_length=8)
然后,覆盖save()方法:
def save(self, *args, **kwargs):
today = datetime.date.today()
today_string = today.strftime('%y%m%d')
next_invoice_number = '01'
last_invoice = Invoice.objects.filter(invoice_id__startswith=today_string).order_by('invoice_id').last()
if last_invoice:
last_invoice_number = int(last_invoice.invoice_id[6:])
next_invoice_number = '{0:02d}'.format(last_invoice_number + 1)
self.invoice_id = today_string + next_invoice_number
super(Invoice, self).save(*args, **kwargs)
这将为您提供您正在寻找的格式yymmdd##
。注意:如果您每天发票超过99张,则无法使用此功能。如果您需要超过99个,请将{0:02d}
更改为{0:03d}
并在invoice_id字段中设置max_length=9
。这将包含每天999张发票,格式为yymmdd###
。