Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 比较日期的年和月字段是否大于_Python_Django - Fatal编程技术网

Python 比较日期的年和月字段是否大于

Python 比较日期的年和月字段是否大于,python,django,Python,Django,我将执行以下查询: today = datetime.date.today() year=today.year month=today.month news=News.objects.filter(date__year__lt = year,date__month__lt=month) 注意:新闻对象有一个名为date 但我得到了这个错误: Join on field 'date' not permitted. Did you misspell 'year' for the lookup ty

我将执行以下查询:

today = datetime.date.today()
year=today.year
month=today.month
news=News.objects.filter(date__year__lt = year,date__month__lt=month)
注意:新闻对象有一个名为
date
但我得到了这个错误:

Join on field 'date' not permitted. Did you misspell 'year' for the lookup type?
你的想法是什么


提前感谢

Django在处理关系(例如,
date\uuuuuu year\uuuuu*
)时在某些查找方面遇到问题。我认为这是他们正在为未来版本所做的工作

这会产生一个可接受的结果吗

news = News.objects.filter(date__lt = datetime.date(year, month, 1))

您不能将
\u lt
附加到
\u年
\u月
上。只有最后一个双下划线位考虑了限定符,然后才把它看作遍历,即Django将尝试在名为<代码>日期>代码>的连接表中查找一个名为“代码>年份<代码>的字段,这显然是不正确的。 对于这种情况,您需要直接比较日期:

date = datetime.date(year, month, 1)
news = News.objects.filter(date__lt=date)

谢谢,伙计,日期字段有日期和时间,我只想比较一下日期,你建议的方法是正确的,如果消除了时间,我怎么做?你可以将它与
日期字段
日期字段
一起使用。如果是
DateTimeField
比较的时间将隐含在午夜。你的意思是我不能在对其进行此类查询时节省时间和日期?我不确定我是否理解。你想要的只是早于特定月份和年份的新闻。为此,您只需将其与Python
date
进行比较。您还可以使用
datetime.datetime(年、月、1、0、0、0)
,但这是不必要的。这两种方法实际上都不会影响查询返回的内容。您的
日期时间字段
仍然是
日期时间
,即使您将其与查询中的
日期
进行比较。@Asma:它怎么不正确?同样,当您将
日期时间
日期
进行比较时,
日期
基本上被转换为
日期时间
,时间为“00:00:00”,也就是午夜或凌晨12:00,即当天的开始时间。它将返回任何“少于”该日期的内容,这将是前一天或更早的内容,因为现在是午夜。好提示,您的答案是正确的,请查看我的顶部评论。