Как создать уникальный номер для объектов модели 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, все повторяется.
Я думал создать список со всеми номерами_карточек, когда-либо созданных, чтобы я мог ссылаться на последний наивысший номер, даже если я удалю все карточки и начну все сначала. Это не сработало, или я не знаю, как это сделать.
Это огурец, пожалуйста, помогите.