2010-03-15 25 views

Respuesta

50

En Django 1.1 en adelante, puede utilizar defer('col1', 'col2') excluir columnas de la consulta, o only('col1', 'col2') sólo para obtener un conjunto específico de columnas. Ver the documentation.

values hace algo ligeramente diferente: solo obtiene las columnas que especifique, pero devuelve una lista de diccionarios en lugar de un conjunto de instancias de modelo.

+0

Gracias, ambos tienen su uso. – philgo20

+6

@Daniel, ¿sabe por qué la documentación dice que debe evitar estos métodos? Dice que deberían ser el último recurso, y otros métodos deberían agotarse primero. – Furbeenator

+0

buena pregunta ... – rom

17

Añada una .values("column1", "column2", ...) a su consulta

+12

A Nota: Si utiliza '.get()' en lugar de '.filter()' para obtener un objeto específico, y desea recuperar columnas específicas, debe asegurarse de '.values ​​('field1' ,. ..) 'se especifica ANTES del método' .get() '. Si es posterior, genera un error porque obtiene los objetos y luego intenta ejecutar el método '.values ​​()' en 'model instance' en lugar de la propiedad' objects'. – Furbeenator

Cuestiones relacionadas