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_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 参数是“类别”,因此您的反向查找看起来像这样。

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