0

ビューにこのコード行があり、日付ごとにアイテムのグループを表示できます(順序を逆にして、最新のものが最初に表示されるようにしました)。

currentlinks = Current.objects.order_by('date_added').reverse()[:5]

order_by正常に動作しますが、コードをフィルターで連結すると...

currentsources = Current.objects.filter(source__exact='bbc').order_by('date_added')

なぜこれが機能しないのですか?構文が貧弱なのか、それともこれがどのように機能するのか理解していないのでしょうか。

4

2 に答える 2

1

「bbc」のCurrentオブジェクトがない場合は、もちろん空の結果セットが得られます。sourceそれはあなたが意味することではありませんか?そうでない場合は、得られた結果を投稿してください。

更新:試してみるもう 1 つのこと: 起動

manage.py shell

次に、シェルで、問題を引き起こしているクエリセットを評価します。

currentsources = Current.objects.filter(source__exact='bbc').order_by('date_added')

次に、次の操作を行います。

from django.db.import connection
connection.queries

これにより、クエリセットに対して実行される生の SQL が表示されます。この問題を理解するのに役立つはずです。

于 2009-07-08T15:21:30.643 に答える
0

クエリで気づいたことの 1 つは、順序を逆にして新しい日付が最初に表示されるようにする場合は、次の構文を使用することです。

currentlinks = Current.objects.order_by('-date_added')

フィールドの前のマイナス記号は順序を逆にします。これは、SQL の次の構文とほぼ同じです。

SELECT * FROM current_links ORDER BY date_added DESC

filter() が有効であれば、filter() の後にチェーンすると order_by() が機能するはずです。

于 2009-07-08T22:49:20.553 に答える