У меня есть модель, которая выглядит так:
class Item(models.Model):
...
publish_date = models.DateTimeField(default=datetime.datetime.now)
...
И менеджер, который выглядит так:
from datetime import datetime
class ItemManager(Manager):
def published(self):
return self.get_query_set().filter(publish_date__lte=datetime.now()
И вид, который выглядит так:
class ItemArchive(ArchiveIndexView):
queryset = Item.objects.published()
date_field = 'publish_date'
Идея в том, что я могу вызвать Item.objects.published()
и получить набор запросов всех опубликованных Items
.
Проблема в том, что Django, похоже, выполняет вызов datetime.now()
в диспетчере при запуске сервера, а затем кэширует это значение. Итак, если сегодня 24 мая, и я создал Item
с датой публикации 23 мая и запустил сервер 22 мая, этот элемент от 23 мая не будет отображаться в ItemArchive
. ] Посмотреть. Как только я перезапускаю Apache, элемент 23 мая отображается в представлении правильно.
Как заставить Django выполнять datetime.now()
при каждом вызове менеджера?