我要进行此查询:
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?
你的想法是什么?
提前致谢
答案 0 :(得分:10)
您无法将__lt
附加到__year
或__month
。只有最后一个双下划线位考虑限定符,它之前的所有内容都被视为遍历,即Django将尝试在名为year
的连接表上查找名为date
的字段,这显然不是正确的。
对于这样的事情,您需要直接比较日期:
date = datetime.date(year, month, 1)
news = News.objects.filter(date__lt=date)
答案 1 :(得分:2)
Django在处理关系时遇到某些查找问题(例如date__year__*
)。我认为这是他们为未来版本所做的工作。
这是否会产生可接受的结果?
news = News.objects.filter(date__lt = datetime.date(year, month, 1))