use*_*534 5 python django datetime caching
我有一个看起来像这样的模型:
class Item(models.Model):
...
publish_date = models.DateTimeField(default=datetime.datetime.now)
...
Run Code Online (Sandbox Code Playgroud)
还有一个看起来像这样的经理:
from datetime import datetime
class ItemManager(Manager):
def published(self):
return self.get_query_set().filter(publish_date__lte=datetime.now()
Run Code Online (Sandbox Code Playgroud)
一个看起来像这样的视图:
class ItemArchive(ArchiveIndexView):
queryset = Item.objects.published()
date_field = 'publish_date'
Run Code Online (Sandbox Code Playgroud)
我的想法是,我可以调用Item.objects.published()并获取所有已发布的查询集Items.
问题是Django似乎datetime.now()在服务器启动时在管理器中执行调用,然后缓存该值.因此,如果今天是5月24日,并且我创建了Item一个发布日期为5月23日,并且在5月22日启动了服务器,那么5月23日的项目将不会显示在ItemArchive视图中.一旦我重新启动Apache,5月23日项目就会在视图中正确显示.
datetime.now()每次调用管理器时,如何强制Django执行?
dge*_*gel 12
我相信这是由您定义queryset = Item.objects.published()为类变量的视图引起的.ItemArchive最初导入类时,此行将执行一次.您应该将该行移动到每次调用视图时都将执行的方法.
| 归档时间: |
|
| 查看次数: |
1299 次 |
| 最近记录: |