Parece bastante simple, pero todas las consultas de Django parecen ser 'SELECCIONAR *'¿Cómo limitar las columnas devueltas por la consulta de Django?
¿Cómo puedo crear una consulta que devuelve solo un subconjunto de campos?
Parece bastante simple, pero todas las consultas de Django parecen ser 'SELECCIONAR *'¿Cómo limitar las columnas devueltas por la consulta de Django?
¿Cómo puedo crear una consulta que devuelve solo un subconjunto de campos?
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.
Añada una .values("column1", "column2", ...)
a su consulta
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
Gracias, ambos tienen su uso. – philgo20
@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
buena pregunta ... – rom