У меня есть эта модель:Как кэшировать метод модели в django?
class Article(models.Model):
title = models.CharField(max_length=300, blank=False)
body = models.TextField(max_length=10000, blank=False)
created = models.DateTimeField(auto_now_add=True)
def last_post(self):
if self.post_set.count():
return self.post_set.order_by("-created")[0]
Я заметил, что last_post
создает очень дорогостоящий и часто запускаемый запрос. Поэтому я хочу кэшировать его в течение 5 минут.
Я знаю, как кэшировать запрос в представлениях, но last_post
обходит представления и напрямую вызывается в шаблоне. Поэтому оцените ваши советы о том, как их кешировать.
Возможно, 'cached_property' - это то, что вам нужно. Посмотрите: http://www.pydanny.com/cached-property.html – Ingaz
Звучит неплохо. Можете ли вы рассказать об этом в качестве полного ответа? – Jand
'@ cached_property' кэширует результат для всего запроса, а не 5 минут. Возможно, это работает для вас. –