python Django - 将SQL查询转换为ORM查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python Django - 将SQL查询转换为ORM查询相关的知识,希望对你有一定的参考价值。

我想要对orm进行sql查询

SELECT id, title,
(SELECT SUM(AMOUNT) FROM web_history A WHERE A.car_id = B.id AND type = 3)
FROM web_car B;


histories = History.objects.filter(car=OuterRef('pk'), type=3)
cars = Car.objects.annotate(count=Subquery(histories.annotate(a=Sum('amount'))))

这不能通过设置output_field来完成...即使我通过Concat从FloatField以不同方式应用到Char,我也无法解决它。我对是否能得到建议发表评论。

答案

你似乎过于复杂。您只需要在Car上查询,其中注释相关的Histories,其中type = 3。

Car.objects.filter(history__type=3).annotate(count=Sum('history__amount'))

以上是关于python Django - 将SQL查询转换为ORM查询的主要内容,如果未能解决你的问题,请参考以下文章

将 Django 过滤器转换为 RAW SQL 查询 [重复]

python django -2

Django / PostgresQL jsonb (JSONField) - 将选择和更新转换为一个查询

为啥这个 Django 原始 SQL 查询不返回输出?

将 SQL 转换为 Django 可以使用的东西

将 SQLQuery 转换为 django 查询