it-swarm.cn

django模型选择单场

我有一个名为Employees的表/模型,我希望将单个字段的所有行作为查询集。

我知道我可以这样做(希望我能做到这一点):

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

会在数据库中查询所有字段并只使用一个吗?这样做有更好(更快)的方法吗?

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

这会创建所有eng_name的平面列表。如果你想要每行多个字段,你就不能做一个平面列表:这将创建一个元组列表:

Employees.objects.values_list('eng_name', 'rank')
112
Daniel Roseman

除了values_list as Daniel提及 你还可以使用 only (或 defer 用于相反的效果)来获取只有id和指定字段的对象的查询集:

Employees.objects.only('eng_name')

这将运行单个查询:

SELECT id, eng_name FROM employees
13
Oskar Persson

我们可以在值上选择必填字段。

Employee.objects.all().values('eng_name','rank')
1
Alok Choudhary