Django和外键的反向关系

时间:2012-04-11 18:04:11

标签: django django-models

假设以下简单模型:

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))

非常感谢提前!

1 个答案:

答案 0 :(得分:11)

User.objects.filter(author_set__blog__pk=1)

我没注意你的相关名字,所以上面的代码(修订版)现在使用了正确的相关名称。但是,这是真正错误的相关名称。相关名称应描述对方的内容,即Entry。所以真的应该是related_name='entry_set'。但是,这仍然是默认值,因此如果您只是想要,可以删除related_name。我通常会使用相关类的简单复数版本,在这种情况下related_name='entries'。或者,您可能希望使用类似“blog_entries”的内容来更具体。