how can i increment an invoice number with a prefix “INV” and number that increments ‘0001’, ‘0002’, ‘0003’ when the user creates an invoice?
clients_name = models.ForeignKey(Clients, on_delete=models.CASCADE, blank=True,null=True)
invoice_number = invoice_number = models.CharField(max_length=200, blank=True, null=True)
once the user creates the invoice, the hidden field(invoice field) should be autofilled with invoice number, e.g
I think the problem lies in the algorithm, not the technology platform, language or framework.
You can use .zfill(n) to add n-1 zeros in front of the string. Then add INV in front
# get last item
item = Invoice.objects.filter(invoice_number__istartswith='INV').order_by('-create_date')
# last index
index = int(item['invoice_number'][-3:]) # = int('003') = 3
res = 'INV-' + str(x+1).zfill(3)
# res = 'INV-004'
Sorry to ask. This should be in models.py or views.py? if you could write the function i would really appreciate
i am new to django building my first project
You don’t want to try and do this “manually”. (See any of the discussions on here about trying to create unique IDs.)
Create an AutoField to keep the numeric portion, or just use the ID field, and add the text prefix for those situations where it’s needed.
(Precisely how you may want to do this depends upon all the situations where that specific-formatted value is going to be used.)
You can write in models.py, but this solution is manual. As KenWhitesell said: it should be automation. You can refer to his solution.