【发布时间】:2017-09-28 20:04:39
【问题描述】:
我有两个模型,
class Post(models.Model):
id = models.IntegerField(primary_key=True)
post_title = models.CharField()
post_type = models.CharField()
class Comments(models.Model):
id = models.IntegerField(primary_key=True)
post = models.ForeignKey(Post, related_name="post_comments")
comment = models.CharField()
user_id = models.IntegerField()
我想获取带有 post_type "blog" 的 "all" 帖子以及特定用户的 cmets。如果使用原始查询进行,查询将是这样的,
SELECT p.id as post_id, p.post_title, pc.comment
FROM Post p
LEFT JOIN Comments pc ON (p.id=pc.post AND pc.user_id=20)
WHERE p.post_type='blog'
上述查询将返回所有 post_type 为“blog”的帖子以及 user_id 为 20 的 cmets。如何在 django 中使用 Post 对象过滤器来实现这一点?
我试过下面的方法,但是没用。
queryset = Post.objects.filter(post_type='blog', post_comments__user_id=20).all()
我用谷歌搜索了很多,但我找不到一个好的解决方案。
【问题讨论】:
标签: python django django-models django-queryset django-orm