私は次のようなモデルを持っています:
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()
マネージャーで呼び出しを実行し、その値をキャッシュしているように見えることです。したがって、今日が5月24日でItem
、公開日が5月23日のを作成し、5月22日にサーバーを起動した場合、その5月23日のアイテムはItemArchive
ビューに表示されません。Apacheを再起動するとすぐに、5月23日のアイテムがビューに正しく表示されます。
datetime.now()
マネージャーが呼び出されるたびにDjangoを強制的に実行するにはどうすればよいですか?