From a78d90dfeeeaf4be015cac8eaec9b536b340079e Mon Sep 17 00:00:00 2001 From: Pablo Moreno Date: Mon, 27 Jan 2025 09:30:35 +0100 Subject: [PATCH] fix: singleton load and save --- config/models.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/config/models.py b/config/models.py index 9e6a989..3932cb6 100644 --- a/config/models.py +++ b/config/models.py @@ -1,5 +1,6 @@ from django.db import models from django.core.cache import cache +from django.forms.models import model_to_dict class SingletonModel(models.Model): @@ -7,16 +8,23 @@ class SingletonModel(models.Model): abstract = True def save(self, *args, **kwargs): + cache_key = f"{self._meta.model_name}_singleton_key" self.pk = 1 super(SingletonModel, self).save(*args, **kwargs) + # Reset cache + data = model_to_dict(self) + cache.set(cache_key, data, 60 * 60 * 24) + def delete(self, *args, **kwargs): pass @classmethod def load(cls): cache_key = f"{cls._meta.model_name}_singleton_key" - if not (data := cache.get(cache_key)): - data = cls.objects.values().get(pk=1) + data = cache.get(cache_key) + if not data: + instance, created = cls.objects.get_or_create(pk=1) + data = model_to_dict(instance) cache.set(cache_key, data, 60 * 60 * 24) return cls(**data)