自动增加django后端的发票号以获取新发票

Gau*_*rav 6 python django django-admin django-admin-filters django-admin-tools

我想自动增加发票号码,即3位字符和4位数字.

class Invoice:
    invoice_no = models.CharField(max_length=500, null=True, blank=True, validators=[RegexValidator(regex='^[a-zA-Z0-9]*$',message='Invoice must be Alphanumeric',code='invalid_invoice number'),])
Run Code Online (Sandbox Code Playgroud)

我在后端注册了这个模型.但是现在当我点击在admin中创建发票时,发票应该自动填写.当我再次点击在admin中创建新发票时,invoice_number应该加1并且应该是auto字段.

发票编号为MAG0001,MAG0002,MAG0003等的Ex,当我点击创建新发票时,这应该是管理员中的自动字段.

aru*_*lmr 7

定义生成发票编号的功能.

def increment_invoice_number():
    last_invoice = Invoice.objects.all().order_by('id').last()
    if not last_invoice:
         return 'MAG0001'
    invoice_no = last_invoice.invoice_no
    invoice_int = int(invoice_no.split('MAG')[-1])
    new_invoice_int = invoice_int + 1
    new_invoice_no = 'MAG' + str(new_invoice_int)
    return new_invoice_no
Run Code Online (Sandbox Code Playgroud)

现在使用此函数作为模型字段中的默认值.

invoice_no = models.CharField(max_length=500, default=increment_invoice_number, null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

这只是一个想法.修改功能以匹配您的首选发票号格式.