2011-10-28 87 views
2

我正在使用tastypie從我的django模型創建json,但是我遇到了一個我認爲應該有一個簡單修復的問題。按json計數排序

我有一個對象博客極有評論對象的孩子。我希望能夠做這樣的事與我的JSON:

/API/V1 /博客/ ORDER_BY = COMMENT_COUNT

但我無法弄清楚如何排序字段,這不是的一部分嗎?原始評論/博客模型。我創建comment_count自己在脫水方法,只需要評論和返回comments.count()

任何幫助將不勝感激 - 我似乎無法找到任何解釋。

回答

2

如果我理解正確這應該幫助:

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

是的!其實我只是在文檔中發現的。然而,由於某種原因,該查詢的結果是花了很長的時間才能返回....這是正常的嗎? –

+0

@ 9位我在大數據集中沒有使用過,因此無法確定。我不認爲這應該是「可笑的」緩慢。 – 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'], 
) 

我沒有測試過這一點,但它應該工作。需要注意的是,它只能用於關係數據庫。