场景:按日期值过滤的查询集似乎使用过程生成的日期值一次,然后重复用于所有后续请求。也就是说,如果应用程序运行了几天,并且发布的内容的发布日期等于当前日期,那么在重新加载应用程序服务器之前,它将不显示为已发布
显而易见的答案是查询集使用的是date.today()
而不是date.today
,但这不是这里的情况:
from datetime import date, timedelta
from django.db import models
class PublishedManager(models.Manager):
def get_query_set(self):
return super(PublishedManager, self).get_query_set().filter(
published_date__lte=date.today, active=True)
为什么date.today
未被正确评估?我在这里错过了一些令人目眩的明显或者还有其他事情发生了吗?
这是一个使用Apache mod_wsgi在Python 2.7上运行Django 1.4.16的应用程序。
答案 0 :(得分:0)
您需要调用方法:
date.today()
date.today
只返回内置方法。它实际上并没有称之为。例如:
>>> from datetime import date
>>> date.today
<built-in method today of type object at 0x97f780>
>>> date.today()
datetime.date(2014, 11, 4)