我的模型中有这个设置:
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 = ????
如果我指定了一个直通字段,我可以使用它,但是现在Django为我创建了穿透字段,并且因为它应该是透明的,所以我宁愿不引用字段(除非有适当的Django构造) )。
答案 0 :(得分:1)
使用Lookups that span relationships:
topics = Topic.objects.filter(article__authors=author).distinct()
注意:你必须在这里使用distinct,因为不同的文章可以选择相同的主题。