假设以下简单模型:
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))
非常感谢提前!
答案 0 :(得分:11)
User.objects.filter(author_set__blog__pk=1)
我没注意你的相关名字,所以上面的代码(修订版)现在使用了正确的相关名称。但是,这是真正错误的相关名称。相关名称应描述对方的内容,即Entry
。所以真的应该是related_name='entry_set'
。但是,这仍然是默认值,因此如果您只是想要,可以删除related_name
。我通常会使用相关类的简单复数版本,在这种情况下related_name='entries'
。或者,您可能希望使用类似“blog_entries”的内容来更具体。