我想創建一個查詢,我可以在屏幕上顯示每個類別的最後3個論壇帖子。這裏是我的模型機的安裝方式:每個組的限制n個結果 - Django queryset
class ForumCategory(models.Model):
name = models.CharField(max_length=40)
description = models.TextField()
class_id = models.ForeignKey(Class)
class ForumPost(models.Model):
name = models.CharField(max_length=100)
details = models.TextField()
author = models.ForeignKey(User)
class_id = models.ForeignKey(Class)
category = models.ForeignKey(ForumCategory)
created_at = models.DateTimeField(auto_now_add=True)
我目前的查詢返回一般3個最近的職位,按類別不是3:
categories = ForumCategory.objects.filter(class_id=class_id)
forum_post = ForumPost.objects.filter(category_id__in=categories.values_list('id', flat=True)).order_by('-category_id')[:3]
所以我第一個搶屬於所有類別我想列出這些類別以及每個類別中最近發佈的3個帖子。
我認爲作者的問題是假定只使用一個SQL請求獲取所有數據。否則,這項任務是微不足道的。你可以迭代類別,但這是顯而易見的解決方案,它會產生太多的查詢(對於小應用程序/站點來說不成問題,當你有一個高負載項目時,這是個大問題)。 –