12

假设以下简单模型:

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

class Entry(models.Model):
    blog = models.ForeignKey(Blog)
    headline = models.CharField(max_length=255)
    body_text = models.TextField()
    author = models.ForeignKey(User, related_name='author_set')

如何获取参与特定博客的所有作者(即 pk=1)?我尝试过这样的事情,但没有奏效。

User.objects.author_set.filter(blog=Blog.objects.get(pk=1))

提前谢谢了!

4

1 回答 1

12
User.objects.filter(author_set__blog__pk=1)

我没有注意您的相关名称,因此上面的代码(修订版)现在使用正确的相关名称。然而,这是一个非常糟糕的相关名称。相关名称应描述对面的内容,即Entry. 所以真的应该是related_name='entry_set'。但是,无论如何,这是默认设置,因此您可以related_name根据需要删除。我通常会使用相关类的简单复数版本,在这种情况下是related_name='entries'. 或者,您可能想要更具体地使用“blog_entries”之类的内容。

于 2012-04-11T18:12:50.470 回答