В вашей модели есть поле для счета:
class Cart(models.Model):
.....
invoice_id = models.PositiveIntegerField(null=True,unique=True)
Устанавливайте значение только тогда, когда это необходимо.
Чтобы найти следующий идентификатор:
try:
nextID = Cart.objects.exclude(invoice_id=None).order_by('-invoice_id')[0].invoice_id + 1
except IndexError:
nextID = 1
Подумав об этом еще немного ... мне приходит в голову, что счета-фактуры лучше использовать в качестве отдельной модели. Вы можете связать их с вашими тележками с помощью ForeignKey("invoice",null=True)
. Затем они могут быть созданы при необходимости, поле первичного ключа по умолчанию может быть вашим монотонно увеличивающимся числом, а затем может иметь отдельный жизненный цикл для объектов корзины.