1
我想顯示包含5個最新評論的帖子列表。我如何用db查詢的最小數量來做到這一點?在django中預取有限數量的相關對象
Post.objects.filter(...).prefetch_related('comment_set')
檢索所有評論,而我只需要他們幾個。
我想顯示包含5個最新評論的帖子列表。我如何用db查詢的最小數量來做到這一點?在django中預取有限數量的相關對象
Post.objects.filter(...).prefetch_related('comment_set')
檢索所有評論,而我只需要他們幾個。
我會去兩個查詢。首先得到的帖子:
posts = list(Post.objects.filter(...))
現在運行原始的SQL查詢與UNION
(注:爲簡化起見,省略排序):
sql = "SELECT * FROM comments WHERE post_id=%s LIMIT 5"
query = []
for post in posts:
query.append(sql % post.id)
query = " UNION ".join(query)
並運行它:
comments = Comments.objects.raw(query)
之後,你可以循環評論並將它們分組在Python端。
我還沒試過,但看起來還好。
有您的問題(可能是越來越下降到一個查詢)其他可能的解決方案,看看這個:
http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/
跟着你提供的鏈接,並在那裏發現其中指出,另一個鏈接使用工會在性能方面更好。所以答案被接受了,謝謝) – Acute 2013-04-08 09:50:26