如何获得所有' Post'对象'用户'已经回复了?

时间:2015-05-25 13:01:28

标签: python django django-models django-1.7

我有一个数据库表Post,用于存储用户创建的帖子。其他用户可以创建对这些帖子的回复,存储在PostReply表中。现在,Post的所有者可以接受一个PostReplyPostReply的所有者必须知道他们创建的所有Post已接受回复。< / p>

基本上,模型看起来像这样:

class Post(models.Model):
    owner = models.ForeignKey('auth.User', related_name = 'posts')
    content = models.CharField(max_length = 1000, default = '')

class PostReply(models.Model):
    owner = models.ForeignKey('auth.User', related_name = 'replies')
    post = models.ForeignKey(Post, related_name = 'replies')
    accepted = models.BooleanField(default = False)

我遇到问题的是:我如何检索所接受的回复是用户的所有帖子?我知道我可以像这样得到用户的所有PostReply个对象:

queryset = PostReply.objects.filter(owner = self.request.user)

...我可以通过过滤只接受的查询集来定义这个查询集:

queryset = queryset.filter(accepted = True)

...但我不知道如何获取相关的Post项目。

详细说明,这是一个场景:

User 'Foo' creates a post 1
User 'Bar' creates a reply to post 1
User 'Foo' accepted 'Bar's reply to post 1

现在,用户&#39; Bar&#39;应该能够在服务器上查询他的回复是被接受的帖子的列表。我该怎么做?

1 个答案:

答案 0 :(得分:1)

如果我没弄错的话,你可以尝试:

posts = Post.objects.filter(postreply__owner=self.request.user, postreply__accepted=True)

更多关于Django documentation: Lookups that span relationships

附注:注意接受的帖子回复的独特性。