如何执行从原始SQL到django queryset的转换
我正在努力转换为具有原始sql的django查询 我是django的新手,任何帮助都将不胜感激 有一些简单的模型: 酿酒师-目标模型 酒 职位 酿酒师拥有1+种葡萄酒 Wine有1+个帖子 我知道应该用注释来完成,但不知道如何实现它如何执行从原始SQL到django queryset的转换,sql,django,django-queryset,Sql,Django,Django Queryset,我正在努力转换为具有原始sql的django查询 我是django的新手,任何帮助都将不胜感激 有一些简单的模型: 酿酒师-目标模型 酒 职位 酿酒师拥有1+种葡萄酒 Wine有1+个帖子 我知道应该用注释来完成,但不知道如何实现它 select w2.*, (select count(wp.id) from web_winemaker www inner join web_wine ww on www.id = ww.winema
select w2.*,
(select count(wp.id)
from web_winemaker www
inner join web_wine ww on www.id = ww.winemaker_id
inner join web_post wp on ww.id = wp.wine_id
where
ww.status=20
and
wp.status=20
and
www.id = w2.id
) as wineposts_count,
(
select count(w.id)
from web_winemaker www1
inner join web_wine w on www1.id = w.winemaker_id
where
w.status=20
and www1.id = w2.id
) as wines_count
from web_winemaker w2;
您应该能够通过注释函数中的表达式实现这一点。我猜了一下您的关系字段中的
相关的\u name
值,因此下面的代码可能不会直接插入,但应该可以让您了解如何执行所需操作
from django.db.models import Count, Q
wine_makers = Winemaker.objects.annotate(
posts_count=Count(
'wine__post__id',
filter=Q(wines__status=20, wines__posts__status=20),
),
wines_count=Count(
'wines__id',
filter=Q(wines__status=20),
),
)
您可能需要提供
distinct=True
,这取决于您是否正在跨越关系。您是否可以将您的模型添加到您的问题中,并在可能的情况下用示例描述所需的输出!所以,反应迅速且非常合适的答案,是的,相关的名称是wines
和posts
。