2011-09-21 12 views
44

Tengo una tabla/modelos llamados Employees y me gustaría obtener todas las filas de un solo campo como un conjunto de preguntas.modelos django seleccionando campo único

sé que puedo hacerlo de esta manera (espero que estoy haciendo este derecho, incluso):

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

consultaría la base de datos para todos los campos y utilizando sólo uno? ¿Hay una forma mejor (más rápida) de hacer esto?

+0

¿Qué quiere decir con "y usar solo uno"? A 'SELECT col' en lugar de' SELECT * '? –

Respuesta

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

Eso crea una lista plana de todos eng_name s. Si desea más de un campo por fila, no se puede hacer una lista plana: esto creará una lista de listas:

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

gracias por la respuesta, ¿qué sucede si quiero seleccionar solo 1 o más campos (no todos)? – zentenk

+0

Lo siento, no entiendo la pregunta. –

+1

nevermind Encontré los documentos, ¡gracias! – zentenk

4

Además de values_list como Danielmentions también se puede utilizar only (o para defer el efecto contrario) para obtener un conjunto de consultas de objetos sólo tienen su ID y campos especificados:

Employees.objects.only('eng_name') 

Esto ejecutará una sola consulta:

SELECT id, eng_name FROM employees