比较来自世界各地的卖家的域名和 IT 服务价格

加入的额外条件 django

我可以向操作员添加其他条件吗? join, 创造了 django ORM?

我需要在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/


但我该如何添加
AND "watchlist"."user_id" = …

在一个状态 JOIN 从 django ORM?

将其添加到过滤器不允许获取对象 Post 在观察列表中没有相关对象。
已邀请:

八刀丁二

赞同来自:

在 Django v2.0 使用
https://docs.djangoproject.com ... jects

Post.objects.annotate/
t=FilteredRelation/
'watchlist', condition=Q/watchlist__user_id=1/
/.filter/t__field__in=.../

诸葛浮云

赞同来自:

简短答案:在某些条件下 - 是的。

休息时 JOINs 从 GenericForeignKey, Django 呼叫
https://github.com/django/djan ... 3L437
, 这增加了提案的额外条件 ON 有限制 "content_type_id".

为了 "ForeignKey" 此方法也称为返回。 none.

您可以使用这个地方来提出要约的额外限制。 ON, 如果您设法组织代码以便在特定时间获取正确的限制参数。


class UserForeignKey/models.ForeignKey/:

def get_extra_restriction/self, where_class, alias, related_alias/:
field = self.model._meta.get_field/'user'/
cond = where_class//
# Here is a hack to get custom condition parameters
value = SomeContextManager.get_needed_value//

lookup = field.get_lookup/'exact'//field.get_col/related_alias/, value/
cond.add/lookup, 'AND'/
return cond

class WatchList/models.Model/:

user = UserForeignKey/User/

小姐请别说爱

赞同来自:

Post.objects.annotate/Count/'watchinglist'//.filter/pk=123/.extra/where=['"watchlist"."user_id" = 1']/


快乐的编码。

要回复问题请先登录注册