pub_date__gte = datetime.now的功能

时间:2013-09-09 21:02:49

标签: python django

>>> Entry.objects.filter(
...     headline__startswith='What'
... ).exclude(
...     pub_date__gte=datetime.now()
... ).filter(
...     pub_date__gte=datetime(2005, 1, 1)
... )

“这将获取数据库中所有条目的初始QuerySet,添加过滤器,然后排除,然后添加另一个过滤器。最终结果是一个QuerySet,其中包含标题以”What“开头的所有条目,这是在2005年1月1日和当天之间发布的。“

有人可以解释一下__和gte这个词在这个上下文中的作用。我无法想象上面的查询如何提取2005年1月1日和当前日期之间的范围,因为我们排除了datetime.now。我确信它与我在双重下划线和gte中缺少的东西有关。感谢。

1 个答案:

答案 0 :(得分:3)

__gte只是表示“大于或等于”运算符,这只是制作WHERE子句的特殊语法。还有其他内容,例如__gt__lt__lte__startswith等。请参阅documentation中的详细信息。

exclude()filter正好相反,引自docs

  

filter(**kwargs)

     

返回包含匹配对象的新QuerySet   给定的查找参数。

     

exclude(**kwargs)

     

返回一个新的QuerySet,其中包含与给定查找参数不匹配的对象。

所以,您提供的代码实际上是在说:

给我所有条目,其中:

  • headlineWhat
  • 开头
  • pub_date 大于或等于当前日期和
  • pub_date大于或等于1/1/2005

另见: