【问题标题】:Django - Retrieve all manytomany field objects related to a specific modelDjango - 检索与特定模型相关的所有多字段对象
【发布时间】:2021-11-20 13:34:19
【问题描述】:

我有我的模型 reviewsnews,它们都与 Category 模型具有多对多关系。
现在我想获取与这两个模型之一相关的所有类别。例如,为了获取与 News 模型关联的所有类别,我尝试使用 News.categories.all() 查询数据库,但得到了 AttributeError: 'ManyToManyDescriptor' object has no attribute 'objects'

新闻模型:

class News(models.Model):
    ...
    categories = models.ManyToManyField("articles.Category", related_name="news")
    ...

评论模型:

class Reviews(models.Model):
    ...
    categories = models.ManyToManyField("articles.Category", related_name="reviews")
    ...

【问题讨论】:

    标签: python django django-models django-queryset


    【解决方案1】:

    您将希望通过 Category 模型检索对象。 您可以在 Category 模型上过滤相关名称。

    试试Category.objects.filter(reviews__isnull=False)Category.objects.filter(news__isnull=False)

    【讨论】:

    • 我明白了,但这里有一个问题。您建议的查询不包括与这两个模型关联的类别。我认为答案需要稍微改变一下。所需的查询将是 Category.objects.filter(reviews=True)Category.objects.filter(news=True)
    • 我不这么认为,因为Category.objects.filter(reviews__isnull=False) 将返回链接到Reviews 模型的所有类别,无论news 是否为空
    • 刚刚测试过了。你的答案很好用。感谢您的帮助。
    猜你喜欢
    • 2011-12-29
    • 2021-04-06
    • 2015-08-01
    • 2011-01-15
    • 2020-07-23
    • 2015-10-01
    • 2012-12-24
    • 1970-01-01
    • 2017-07-13
    相关资源
    最近更新 更多