Как создать уникальный номер для объектов модели Django?

Я работаю над проектом, в котором пользователь может создать карточку под свою компанию. К сожалению, базы данных индексируют все карточки, независимо от компании. Я хотел бы создать уникальный номер для всех карточек, но сериализованный в зависимости от компании, например, как создать номер счета-фактуры, который всегда будет уникальным. Две модели находятся здесь:

class Company(Organization): 
    name = models.Charfield(max_length=256, null=True)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True, blank=True)
    email = models.EmailField(null=True)
    date_created = models.DateField(default=timezone.now, null=True)

class Card (models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='card_user', null=True)
    thecompany = models.ForeignKey(Company, related_name = "company_card", on_delete=models.CASCADE, null=True)
    date_created = models.DateField(default=timezone.now) 
    card_number = models.PositiveIntegerField(default=1, null=True, editable=False)

    def save(self, *args, **kwargs):
   
        if self.card_number == 1:
       
            try:
                last = Card.objects.filter(thecompany=self.thecompany).latest('card_number')
                self.card_number = last.card_number + 1
            
            except:
                self.card_number = 1
       
        super(Card, self).save(*args, **kwargs)

Я могу упорядочить созданные объекты в соответствии с компанией, используя поле card_number на Card. Ниже приведена модель:

Метод сохранения работает хорошо и сохраняет последовательность Card_Number даже при удалении карт, вплоть до удаления объекта карты с наибольшим номером. Затем, если вы создадите объект карты после удаления карты с наибольшим номером card_number, все повторяется.

Я думал создать список со всеми номерами_карточек, когда-либо созданных, чтобы я мог ссылаться на последний наивысший номер, даже если я удалю все карточки и начну все сначала. Это не сработало, или я не знаю, как это сделать.

Это огурец, пожалуйста, помогите.

Вернуться на верх