Django raw查询聚合功能

时间:2013-05-21 07:23:22

标签: django django-queryset

我需要编写django raw查询函数来获取sum值然后写入csn文件。  我写了我的查询

for time in Tracking_details.objects.raw('SELECT *,sum=SUM(work_time) FROM structure_tracking_details WHERE employee_id='+ employee_id + ' GROUP BY project_structure ') :      
        writer.writerow([ time.project_structure,time.sum ])

告诉

  

没有这样的栏目:总和

如何正确编写查询?

1 个答案:

答案 0 :(得分:2)

sum=SUM(work_time)替换为SUM(work_time) AS sum

BTW,employee_id='+ employee_id + '是一种非常糟糕的构建查询的方式。你不应该这样做。它使您的查询倾向于SQL注入,因为Django不会检查您在raw()函数中传递的任何查询。您可以将参数传递给原始查询,如下所示 -

Tracking_details.objects.raw('SELECT *, SUM(work_time) AS sum FROM structure_tracking_details WHERE employee_id = %s GROUP BY project_structure', [employee_id])

More details

相关问题