호출 된 테이블 / 모델 Employees
이 있고 단일 필드의 모든 행을 쿼리 세트로 가져오고 싶습니다.
나는 내가 이것을 할 수 있다는 것을 안다 (내가 이것을 올바르게하고 있기를 바랍니다) :
emp_list = Employees.objects.get(all)
emp_names = emp_list.eng_name
모든 필드에 대해 데이터베이스를 쿼리하고 하나만 사용합니까? 더 나은 (더 빠른) 방법이 있습니까?
답변:
Employees.objects.values_list('eng_name', flat=True)
모든 eng_name
s의 단순 목록을 만듭니다 . 한 행에 둘 이상의 필드를 원하면 단순 목록을 수행 할 수 없습니다. 이렇게하면 튜플 목록이 생성됩니다.
Employees.objects.values_list('eng_name', 'rank')
값보다 필수 필드를 선택할 수 있습니다.
Employee.objects.all().values('eng_name','rank')
var_name = Employee.objects.all().values('eng_name','rank')
for person in var_name: print(person['eng_name'] + " " + person['rank'])
Oskar Persson의 답변은 데이터를 컨텍스트 에 전달하고 일반 값 목록 대신 개체 인스턴스 (소품을 쉽게 반복 할 수 있음)를 가져올 때 템플릿 에서 정상적으로 처리하는 것이 더 쉬워지기 때문에이를 처리하는 가장 좋은 방법 입니다.
그 후 원하는 소품을 쉽게 얻을 수 있습니다.
for employee in employees:
print(employee.eng_name)
또는 템플릿에서 :
{% for employee in employees %}
<p>{{ employee.eng_name }}</p>
{% endfor %}
Daniel 대답은 그 자리에서 옳습니다. 둘 이상의 필드를 쿼리하려면 다음을 수행하십시오.
Employee.objects.values_list('eng_name','rank')
그러면 튜플 목록이 취소됩니다. 둘 이상의 필드를 쿼리 할 때는 named = Ture를 사용할 수 없습니다.
또한 해당 정보와 함께 하나의 필드 만 존재하고 pk ID를 알고 있다면 다음을 수행하십시오.
Employee.objects.values_list('eng_name','rank').get(pk=1)
SELECT col
대신SELECT *
?