Как автоматически увеличивать переменную класса при создании экземпляра модели django?

Я пытаюсь автоматически увеличить модель (переменную класса) с помощью сигналов django. Все работает нормально, но только каждый раз, когда я выключаю компьютер, счетчик обнуляется. Я не знаю, что именно я делаю неправильно. Вот models.py

class Project(models.Model):
Count = 0

manager = models.ForeignKey(
    User,
    related_name="project_managing",
    on_delete=models.SET_NULL,
    blank=True,
    null=True,
)


 class Saga(models.Model):
    status = (
        ("Do", "Done"),
        ("Td", "To do"),
        ("Ir", "In Review"),
        ("Un", "Under Review"),
        ("Ap", "Approved"),
        ("Ca", "Cancelled"),
    )
    name = models.CharField(max_length=45)
    epic_project = models.ForeignKey(
        Project, on_delete=models.CASCADE, related_name="sagas", blank=True, null=True
    )
    epic_status = models.CharField(max_length=2, blank=True, null=True, choices=status)

    epic_key = models.CharField(max_length=30, blank=True, null=True)

Вот signals.py

@receiver(pre_save, sender=Saga)
def epicKey(sender, instance, *args, **kwargs):
    if not instance.epic_key:
        instance.epic_key = (
            instance.epic_project.key + "-" + str(instance.epic_project.Count + 1)
        )
        instance.epic_project.__class__.Count += 1

Не знаю, почему он повторно инициализирует переменную count.

Это не правильный способ сделать это.

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

Вам нужна какая-то база данных, например Redis или PostgreSQL, для энергонезависимого хранения данных.

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

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