2012-02-13 6 views
4

よりも大きくなるように日付フィールドの年と月を比較:は、私は、このクエリを実行するつもりです

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? 

あなたのアイデアは何ですか?関係(例えばdate__year__*)を介して作業するときに予め

おかげ

答えて

9

あなたは__yearまたは__monthの上に__ltを追加することはできません。最後の二重下線ビットのみが修飾子を考慮しています。すべてがトラバーサルとして扱われる前のすべてです。すなわち、Djangoは、dateという名前の結合テーブルでyearという名前のフィールドを検索しようとします。あなただけの日付を直接比較する必要があります。このような何かのために

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

ありがとうございました、日付フィールドには日付と時刻があり、日付を比較したいのですが、時間が無ければ正しいと思いますが、どうすればいいですか? –

+0

これは、 'DateField'や' DateTimeField'で使うことができます。 'DateTimeField'の場合、比較される時間は暗黙的に真夜中になります。 –

+0

私はそのような質問をするつもりで、私は時間と日付を保存できないのですか? –

2

Djangoは、特定の検索に問題を有しています。私はこれが将来のバージョンで働いていると思います。

これは許容可能な結果を​​もたらしますか?

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

大きなヒント、あなたの答えが正しい、私の一番上のコメントを見てみましょう。 –

関連する問題