2013-05-21 248 views
0

我需要編寫django原始查詢函數來獲取總和值,然後寫入csn文件。 我寫我的查詢Django原始查詢聚合函數

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 ]) 

它告訴

沒有這樣的列:總和

如何正確地編寫查詢?

回答

2

sum=SUM(work_time)替換爲SUM(work_time) AS sum

順便說一句,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

+1

感謝您的回答和評論:)我改變了我的查詢:) – Lahiruzz