我有两个这样的模型(简化):
class Post(models.Model):
content = models.TextField('content')
#...
class Vote(models.Model):
user = ForeignKey(User)
status = models.TextField(choices = some_choices, default = 'likes')
post = models.ForeignKey(Post)
#...
我想要做的是使用一些过滤器选择(使用一个查询)帖子,该过滤器带有一个特定(假设是当前)用户对这个帖子的投票(如果他没有投票也没关系),所以我可以输出所有帖子用户可以看到他喜欢哪些,不喜欢哪些,根本没有投票。
select_related
for Vote
model 在这里无济于事,因为无法过滤相关对象,所以我想我应该做一些额外的事情,但我无法弄清楚我应该传递哪些参数。
所以我想,它应该是这样的:
Post.objects.filter(content__contains="test").extra(tables="app_vote", where={'my_vote_status': 'something here perhaps?'})
您能帮我理解如何进行这样的查询吗?
UPD: schacki 提供了一个很好的解决方案,唯一的问题是我想从模板中访问不同用户的投票,比如Post.vote_by_me
和Post.vote_by_this_user
或Post.vote_by_top_user