2012-05-07 6 views
2

私は 'items'を持つテーブルを持っているDjangoアプリケーションを作成しています。作成された日付とポイント数持ってる。私は最後の4日間から最も多くのポイントを持つアイテムを返すクエリを書いたかったのです。その前に4日間で最も多くのポイントを持つアイテムが続きました。私はどのようにそれをやっていくことができるのだろうと思っていた(私は非常にSQLに新しいです、そして、これが基本的な質問であれば非常に残念です)。私は私のDjangoビューで4つのすべてのセット内のトップレコードを取得することを繰り返し、オブジェクトを組み合わせることができると思ったが、それはすべてのセットのデータベースを打つ必要があり、私はそれが悪い方法だろうと推測しているしている?すべてのポインタは本当にありがとう!4日以内に作成されたすべてのレコードセット内の 'トップ'レコードを取得

ありがとうございます!

答えて

5

残念なことに、ここのグループごとにデータベースに当たることを避ける方法はありません。それは大きな問題ではないはずです、私はあなたがグループの数を何か賢明に制限していると仮定していますか?データベースの読み込みを心配している場合は、「作成日」および「ポイント」フィールドのインデックスを作成してください。

あなたのコードのようなものになります。

from datetime import date, timedelta 
from models import Item 

groups = [] 
for i in range(0, 10): 
    items = Item.objects.filter(date_created=date.today() - timedelta(i)) 
    groups.append(items.order_by('-points')) 
+0

をあなたの答えの男のためのおかげで、それを感謝しています。 – iman453

関連する問題