2009-08-02 3 views
12

私はRankingモデルとUserRankingモデルという2つのモデルを持っています。アプリは、アイテムのリストを取得し、それらをランク付けする人々に集中しています(「2008年のベストムービー」など)。ランク付けモデルは、集計ランク付けされた全体的なリストです。これは、ユーザーがそのリストに対して作成するすべての異なるUserRankingsから計算されます。だから、各ランキングには、UserRankingsの束があり、リストのランク付けされたバージョンを提出して意見を出したユーザーごとに1つだけです。 UserRankingモデルには、Rankingモデルを指す「ランキング」という名前のForeignKeyフィールドがあります。非常に混乱... Djangoで 'annotate'を使用している問題

とにかく、私は人気のランキングを集めようとしています。私の最初のステップは、コード行を使用して、それらに関連する最もUserRankingsでランキングを得ることです:

popular = Ranking.objects.all().annotate(num_user_rankings=Count('userranking')).order_by('num_user_rankings')[:50] 

をしかし、Djangoは私にNameErrorを与え、言う:「グローバル名 『カウント』が定義されていません」。 注釈(Django開発版でのみ利用可能です)については不平を言っていないので、Django開発は正しく機能していますか? 'Count'はDjangoのドキュメントにannotateのargとして使用できるいくつかのAggregate関数の1つとして明確に記述されています。これはまったく意味がありません。

実際、私はそれをテストしたところ、パラメタなしで注釈を使ってページを表示することができましたが、エラーは出ませんでした(明らかに私はorder_byも削除しました)。だから、注釈は確実に機能します!

答えて

32

django.db.modelsから数えましたか?

+3

答えは簡単ではないと私は信じられない。私は何か愚かなことをしていることを知っていましたが、そんなにばかげていません!ありがとう、素晴らしい一日=) –

関連する問題