如何获取 'User' 已回复的所有 'Post' 个对象?
How to get all 'Post' objects where 'User' has replied?
我有一个数据库 table Post
用于存储用户创建的帖子。其他用户可以创建对这些帖子的回复,并存储在 PostReply
table 中。现在,Post
的所有者可以接受单个 PostReply
,而 PostReply
的所有者必须知道他们已创建接受回复的所有 Post
。
基本上,模型是这样的:
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
现在,用户 'Bar' 应该能够向服务器查询他的回复被接受的帖子列表。我该怎么做?
如果我没记错的话,你可以试试:
posts = Post.objects.filter(postreply__owner=self.request.user, postreply__accepted=True)
更多关于 Django documentation: Lookups that span relationships。
旁注:注意接受的 post 回复的唯一性。
我有一个数据库 table Post
用于存储用户创建的帖子。其他用户可以创建对这些帖子的回复,并存储在 PostReply
table 中。现在,Post
的所有者可以接受单个 PostReply
,而 PostReply
的所有者必须知道他们已创建接受回复的所有 Post
。
基本上,模型是这样的:
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
现在,用户 'Bar' 应该能够向服务器查询他的回复被接受的帖子列表。我该怎么做?
如果我没记错的话,你可以试试:
posts = Post.objects.filter(postreply__owner=self.request.user, postreply__accepted=True)
更多关于 Django documentation: Lookups that span relationships。
旁注:注意接受的 post 回复的唯一性。