【发布时间】:2012-09-15 10:01:27
【问题描述】:
我有两个这样的模型(简化):
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 模型在这里无济于事,因为无法过滤相关对象,所以我想我应该做一些额外的事情,但我不知道应该传递什么参数。
所以我猜应该是这样的:
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
【问题讨论】:
-
您如何关联
Post和Vote?你从你的例子中遗漏了一些重要的东西 -
哎呀,你是对的。感谢您指出这一点,我已经添加了与问题的关系。
标签: python sql django orm django-orm