私は、画面に表示されるカテゴリごとに最後の3つのフォーラム投稿を引っ張ることができるクエリを作成しようとしています。グループごとの結果の制限 - Djangoクエリーセット
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]
だから私は最初のAに属しているすべてのカテゴリをつかむここに私のモデルが設定される方法がありますこれらのカテゴリを各カテゴリの最新の3つの投稿と一緒にリストしたいと思います。
私は、著者の質問は、ただ1つのSQL要求を使用してすべてのデータをフェッチすると仮定していると考えました。それ以外の場合、タスクは簡単です。カテゴリを反復することはできますが、それは明らかな解決策であり、クエリが多すぎます(小さなアプリケーション/サイトでは問題ではなく、負荷の高いプロジェクトでは大きな問題です)。 –