如何在django中通过多级反向外键获取相关对象查询集?

时间:2017-09-06 04:28:08

标签: python django django-models foreign-keys django-queryset

我有一个类型的模型:

class Publisher(models.Model):
    ...

class Author(models.Model):
    publisher = models.ForeignKey(Publisher, on_delete=models.CASCADE)

class Article(models.Model):
    author= models.ForeignKey(Author, on_delete=models.CASCADE)

现在我正试图从给定的发布者'pub'获取所有文章。 我尝试过以下操作:

  

pub.article_set()

     

pub.authot_set()。article_set()

以及其他失败的试探者。那么如何在不多次访问数据库的情况下检索给定发布者的所有文章的Queryset?什么是最有效的方式?

提前致谢!

1 个答案:

答案 0 :(得分:4)

减少数据库查询次数的最有效方法是过滤文章的查询集。

# pub is the instance of Publisher
articles = Article.objects.filter(author__publisher=pub)