3

多対多のフィールドがcategoriesあり、そのフィールドに個別の値を格納したいと思います。

以下は私のモデルです:

class Book (models.Model):
    categories=models.ManyToManyField(Category, related_name = 'categories', blank = True, null=True)

これが私のカテゴリーモデルです:

class Category (MPTTModel):
    category = models.CharField(max_length=250)
    parent = TreeForeignKey('self', blank=True, null=True, related_name='children')

本に関連するすべてのカテゴリを取得したいと思います。どうすればいいですか?

4

2 に答える 2

6

book の1 つのインスタンスに関連するカテゴリを取得する場合は、 を実行しますbook_inst.category_set.all()。重複はありません。

しかし、 anyCategoriesに関連するすべてのものを取得したい場合は、次のことができます。 Book

Category.objects.filter(categories__in=[Book.objects.all()]).distinct()
于 2012-10-20T08:13:21.660 に答える
0

基本的に、そのカテゴリの本があるかどうかを確認するには、カテゴリ側からの逆引きが必要です。存在する場合は、結果のクエリ セットに追加します。Book の related_name 引数は「categories」であるため、逆ルックアップは次のようになります。

  Category.objects.filter(categories__in = Book.objects.all())
于 2012-10-20T06:58:32.217 に答える