django orm从案例中选择
我想通过Django ORM从子查询中获取一些数据。 这是我的例外SQLdjango orm从案例中选择,django,orm,case-when,Django,Orm,Case When,我想通过Django ORM从子查询中获取一些数据。 这是我的例外SQL SELECT "risk_level", COUNT("t"."id") FROM( SELECT "task_taskreport"."id" as "id", CASE WHEN MAX("task_vuln"."severity_points") >= 8.0 THEN 'high' WHEN (MAX("task_vuln"."severity_
SELECT "risk_level", COUNT("t"."id")
FROM(
SELECT
"task_taskreport"."id" as "id",
CASE
WHEN MAX("task_vuln"."severity_points") >= 8.0 THEN 'high'
WHEN (MAX("task_vuln"."severity_points") >= 5.0 AND MAX("task_vuln"."severity_points") <= 7.0) THEN 'middle'
WHEN (MAX("task_vuln"."severity_points") >= 2.0 AND MAX("task_vuln"."severity_points") <= 4.0) THEN 'low'
WHEN MAX("task_vuln"."severity_points") <= 1.0 THEN 'none'
ELSE NULL
END AS "risk_level"
FROM "task_taskreport"
LEFT OUTER JOIN "task_taskreport_vuln" ON ("task_taskreport"."id" =
"task_taskreport_vuln"."task_report_id")
LEFT OUTER JOIN "task_vuln" ON ("task_taskreport_vuln"."vuln_id" = "task_vuln"."vul_id")
WHERE "task_taskreport"."subtask_id" = 21
GROUP BY "task_taskreport"."id" ORDER BY "task_taskreport"."id" DESC) as t
group by "risk_level";
但这带来了一个例外
django.core.exceptions.FieldError: Cannot compute Count('risk_level'): 'risk_level' is an aggregate
如果您有一个复杂的SQL查询,它完全满足您的需要,那么您可以将其作为查询集进行查询和使用 以下是Django文档页面中的示例:
>>> for p in Person.objects.raw('SELECT * FROM myapp_person'):
... print(p)
John Smith
Jane Jones
>>> for p in Person.objects.raw('SELECT * FROM myapp_person'):
... print(p)
John Smith
Jane Jones