1

我的模型中有这个设置:

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

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

class Article(models.Model):
    name = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author, null=True, blank=True)
    topics = models.ManyToManyField(Topic, null=True, blank=True)

给定一个作者,我想知道他写了哪些主题:

def author_info(request, pk):
    author = get_object_or_404(Author, pk=pk)
    topics = ????

如果我指定了一个 through 字段,我可以使用它,但是现在 Django 为我创建了 through 字段,并且由于它应该是透明的,我宁愿不引用该字段(除非有适当的 Django 构造)。

4

1 回答 1

1

使用跨越关系的查找

topics = Topic.objects.filter(article__authors=author).distinct()

注意:这里必须使用 distinct,因为同一个主题可以被不同的文章选择。

于 2012-04-04T07:31:54.783 回答