2010-03-15 14 views

risposta

50

In Django 1.1 in poi, è possibile utilizzare defer('col1', 'col2') per escludere le colonne dalla query, o only('col1', 'col2') ad ottenere solo un insieme specifico di colonne. Vedi the documentation.

values fa qualcosa di leggermente diverso: riceve solo le colonne specificate, ma restituisce un elenco di dizionari piuttosto che un insieme di istanze di modello.

+0

Grazie, entrambi hanno il loro uso. – philgo20

+6

@Daniel, sai perché la documentazione afferma di evitare questi metodi? Dice che dovrebbero essere l'ultima risorsa, e altri metodi dovrebbero essere esauriti per primi. – Furbeenator

+0

buona domanda ... – rom

17

Appendi un .values("column1", "column2", ...) alla tua richiesta

+12

A Nota: Se si utilizza '.get()' invece di '.filter()' per ottenere un oggetto specifico e si desidera recuperare colonne specifiche, è necessario assicurarsi che '.values ​​('field1' ,. ..) 'è specificato PRIMA del metodo' .get() '. Se è dopo, genera un errore perché ottiene gli oggetti e quindi tenta di eseguire il metodo '.values ​​()' su 'model instance' invece della proprietà' objects'. – Furbeenator

Problemi correlati