【发布时间】:2011-03-20 16:55:51
【问题描述】:
是否可以在 django ORM 创建的 join 语句中添加附加条件?
我在 SQL 中需要的是
'SELECT "post"."id", COUNT("watchlist"."id") FROM "post"
LEFT OUTER JOIN "watchlist"
ON ("post"."id" = "watchlist"."post_id" AND "watchlist"."user_id" = 1)
WHERE "post"."id" = 123 GROUP BY …
在 django 中大部分是
Post.objects.annotate(Count('watchinglist')).get(pk=123)
但是如何使用 django ORM 将AND "watchlist"."user_id" = … 添加到 JOIN 条件中?
将其添加到过滤器无法获取关注列表中没有关联对象的 Post 对象。
【问题讨论】:
-
很好的问题,不确定这将如何被视为标记问题的重复。这个问题是指向关系添加额外的过滤器,而不是简单地执行一个开始。
-
对,这与另一个已标记为重复的问题不同。