У меня есть эта модель:
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
это то, что вам нужно. См.: pydanny.com/cached-property.html. - person Alex Yu   schedule 10.12.2015@cached_property
будет кэшировать результат для всего запроса, а не на 5 минут. Это, возможно, работает для вас. - person Lorenzo Peña   schedule 10.12.2015cached_property
: docs.djangoproject.com/en/1.9/ref/utils/ - person Thomas Druez   schedule 10.12.2015