模型的Django视图中的唯一发票号
我有一个django型号的发票 现在我需要为每天生成唯一的发票号(在Django视图函数中) 例如,2016年4月7日的发票号应为:16040701、16040702、16040703等模型的Django视图中的唯一发票号,django,django-models,django-views,Django,Django Models,Django Views,我有一个django型号的发票 现在我需要为每天生成唯一的发票号(在Django视图函数中) 例如,2016年4月7日的发票号应为:16040701、16040702、16040703等 如何实现这一点?我将通过覆盖发票模型中的save()来实现这一点。首先,在模型中添加发票号字段: invoice\u id=models.CharField(blank=True,max\u length=8) 然后,重写save()方法: 这将为您提供所需的格式yymmd##。注意:如果您每天有超过99张发票
如何实现这一点?我将通过覆盖发票模型中的save()来实现这一点。首先,在模型中添加发票号字段:
invoice\u id=models.CharField(blank=True,max\u length=8)
然后,重写save()方法:
这将为您提供所需的格式yymmd##
。注意:如果您每天有超过99张发票,则此项不起作用。如果您需要99以上,请将{0:02d}
更改为{0:03d}
,并在发票id字段上设置max_length=9
。这将容纳每天999张格式为yymmd###
的发票
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)