Django 多对多:从文章列表中获取类别列表

Django many-to-many: Get a list of categories from a list of articles

为了简单起见,假设我只有 3 个模型:文章、类别、作者。

class Author(models.Model):
    name = models.CharField(max_length='100')
    ...

class Categories(models.Model):
    name = models.CharField(max_length='100')
    ...

class Articles(models.Model):
    name = models.CharField(max_length='100')
    author_id = models.ForeignKey(Author)
    categories = models.ManyToManyField(Categories)
    ...

我按 author_id list_article = Articles.objects.filter(author_id=author_id)

筛选文章列表

我的问题是,如何从 'list_article' 中检索 'Categories' 的列表?

谢谢。

您可以将 in 与文章列表一起使用:

Category.objects.filter(articles__in=list_article)

或者直接给作者做连接:

Category.objects.filter(articles__author_id=author_id)