2011-09-21 104 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