我有两个型号,
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”的“所有”帖子以及特定用户的评论。如果使用原始查询,查询将是这样的,
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的评论。如何使用django中的Post对象过滤器实现此目的?
我尝试了波纹管方法,但它没有用。
queryset = Post.objects.filter(post_type='blog', post_comments__user_id=20).all()
我google了很多,但我找不到一个好的解决方案。
答案 0 :(得分:0)
如果打印,您可以看到原始sql django运行的内容:
import Data.List
parseIntList :: String -> [Int]
parseIntList s = [read x :: Int | x <- words s]
type Polinom = [Int]
scriePolinom :: Polinom -> String
....
main = do
a <- getLine
let intlist = parseIntList a
putStrLn $ scriePolinom intlist
我的猜测是你需要使用这个:
str(Post.objects.filter(post_type='blog', post_comments__user_id=20).query)
答案 1 :(得分:0)
如果您要将所有post_type
作为“博客”退回,将comments
退回user_id 20
,则可以执行此查询
from django.db.models import Q
Post.objects.filter(Q(post_type='blog') | Q(post_comments__user_id=20))