2011-10-28 9 views
2

私はdjangoモデルからjsonを作成するためにtastypieを使用していますが、私は簡単な修正が必要だと思う問題に走っています。jsonのカウントで並べ替え

私はオブジェクトのコメントのオブジェクトの子供を持つブログを持っています。

/API/V1 /ブログ/ ORDER_BY = COMMENT_COUNTしかし、私はの一部ではありません、フィールド上でソートする方法を見つけ出すことはできません?私は、JSONと、このような何かを行うことができるようにしたいです元のコメント/ブログモデル。私はcomment_countを自分自身でdehydrateメソッドで作成し、コメントと戻り値のコメントを取ります。comments.count()

何か助けていただけたら嬉しいです。

答えて

2

私が正しく理解している場合、これは役立つはず:

Blog.objects.annotate(comment_count=Count('comments')).order_by('comment_count') 
+0

をはい!実際には私はそのドキュメントでそれを発見しました。しかし、何らかの理由で、そのクエリの結果が戻ってくるのにばかげて長い時間を費やしています....それは普通ですか? –

+0

@ 9-bit私は大きなデータセットでは使用していないので、確かに言うことはできません。私はそれが "ばかげて"遅くなるべきではないと思います。 – Lycha

+0

異なるorder_byフィールドを使用する場合はどうすればよいですか? – Burak

1

あなたのような何かのようextraでそれを行うことができるかもしれない:

Blog.objects.extra(
    select={ 
     'entry_count': 'SELECT COUNT(*) FROM blog_entry WHERE blog_entry.blog_id = blog_blog.id' 
    }, 
    order_by = ['-entry_count'], 
) 

私はこれをテストしていませんが、それは動作するはずです。注意点は、リレーショナルデータベースでのみ機能するということです。

関連する問題