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