使用Django QuerySet加载一次的日期值在date.today上过滤

时间:2014-11-04 19:22:41

标签: django django-queryset django-filter

场景:按日期值过滤的查询集似乎使用过程生成的日期值一次,然后重复用于所有后续请求。也就是说,如果应用程序运行了几天,并且发布的内容的发布日期等于当前日期,那么在重新加载应用程序服务器之前,它将显示为已发布

显而易见的答案是查询集使用的是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的应用程序。

1 个答案:

答案 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)
相关问题