2011-09-21 185 views
44

我有一個表/模型調用Employees,我想獲取單個字段的所有行作爲查詢集。django模型選擇單個字段

我知道我能做到這樣的(希望我甚至這樣做的權利):

emp_list = Employees.objects.get(all) 
emp_names = emp_list.eng_name 

會查詢各領域的數據庫,並使用只有一個?有沒有更好(更快)的方式來做到這一點?

+0

「只使用一個」是什麼意思?一個'SELECT col'而不是'SELECT *'? –

回答

83
Employees.objects.values_list('eng_name', flat=True) 

這創建了所有eng_name s的平面列表。如果你想每行多個字段,你不能做一個平坦的列表:這將創建一個列表的列表:

Employees.objects.values_list('eng_name', 'rank') 
+0

感謝您的答案,如果我只想選擇一個或多個字段(不是全部),該怎麼辦? – zentenk

+0

對不起,我不明白這個問題。 –

+1

沒關係我找到了文檔,謝謝! – zentenk

4

除了values_listDanielmentions你也可以使用only(或defer爲相反的效果),只得到有他們的ID對象的查詢集和指定的字段:

Employees.objects.only('eng_name') 

這將運行一個查詢:

SELECT id, eng_name FROM employees