问题:django模型选择单个字段
我有一个称为的表/模型Employees
,我想将单个字段的所有行作为查询集。
我知道我可以这样做(希望我做得对):
emp_list = Employees.objects.get(all)
emp_names = emp_list.eng_name
是否要在数据库中查询所有字段并且仅使用一个字段?是否有更好(更快)的方法?
回答 0
Employees.objects.values_list('eng_name', flat=True)
这将创建所有eng_name
s的平面列表。如果您希望每行多于一个字段,则不能做一个平面列表:这将创建一个元组列表:
Employees.objects.values_list('eng_name', 'rank')
回答 1
回答 2
我们可以在值上选择必填字段。
Employee.objects.all().values('eng_name','rank')
回答 3
Oskar Persson的答案是处理该数据的最佳方法,因为当我们获得对象实例(很容易迭代以获取道具)而不是简单的值列表时,可以更轻松地将数据传递到上下文并从模板正常对待数据。
之后,您可以轻松获得所需的道具:
for employee in employees:
print(employee.eng_name)
或在模板中:
{% for employee in employees %}
<p>{{ employee.eng_name }}</p>
{% endfor %}
回答 4
您可以像这样在过滤器旁边使用values_list;
active_emps_first_name = Employees.objects.filter(active=True).values_list('first_name',flat=True)
在这里更多细节