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

时间:2017-12-19 08:00:55

标签: python sql django 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,我也无法解决它。 我对是否能得到建议发表评论。

1 个答案:

答案 0 :(得分:2)

你似乎过于复杂。你只需要一个关于Car的查询,它可以注释相关的Histories,其中type = 3。

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