Как запоминать дорогостоящие вычисления на модельных объектах Django?

У меня есть несколько столбцов TextField в моем объекте UserProfile, которые содержат объекты JSON. Я также определил свойство setter / getter для каждого столбца, который инкапсулирует логику для сериализации и десериализации JSON в структуры данных Python.

Природа этих данных гарантирует, что к ним будет обращаться много раз посредством представления и логики шаблона в рамках одного запроса. Чтобы сэкономить на затратах на десериализацию, я хотел бы запомнить структуры данных python при чтении, аннулировании при прямой записи в свойство или при сохранении сигнала от объекта модели.

Где / Как мне хранить памятку? Я нервничаю по поводу использования переменных экземпляра, так как я не понимаю магию, лежащую в основе того, как конкретный UserProfile создается запросом. Является__init__ безопасно использовать, или мне нужно проверить наличие атрибута memo черезhasattr() при каждом чтении?

Вот пример моей текущей реализации:

class UserProfile(Model):
    text_json = models.TextField(default=text_defaults)

    @property
    def text(self):
        if not hasattr(self, "text_memo"):
            self.text_memo = None
        self.text_memo = self.text_memo or simplejson.loads(self.text_json)
        return self.text_memo
    @text.setter
    def text(self, value=None):
        self.text_memo = None
        self.text_json = simplejson.dumps(value)

Ответы на вопрос(3)

Ваш ответ на вопрос