2011-01-24 11 views
12

Mi stavo chiedendo se ci fossero degli utili aiutanti in Django che restituirebbero i risultati di una query in un formato più "usuabile", quindi non devo scorrere iterando attraverso di essi nella mia vista.Django - I risultati della query vengono definiti come "associativi"?

Ho una domanda come questa:

self.filter(key__in=keys).values('key','value') 

Quello che voglio finire è un oggetto che assomiglia

{'some_key':'some value', 'some_other_key':'some_other_value'} 

Così nel mio modello ho potuto fare qualcosa di simile:

settings = Setting.objects.get_keys(['some_setting','some_other_setting']) 
print settings.some_setting # returns 'some value' 

Dove 'get_keys' è una funzione di gestione che esegue la query del filtro precedente. Qualche idea su come potrei fare questo? Non sarei contrario a iterare attraverso i risultati in Gestione impostazioni perché potrei memorizzarli per dopo ... Non riuscivo comunque a capire come creare una variabile di modello 'globale'.

Qualsiasi aiuto sarebbe molto apprezzato!

risposta

27

Se si utilizza values_list piuttosto che values, verrà restituito un set di due-tuple, che è quindi possibile passare a dict() per creare un dizionario:

return dict(self.filter(key__in=keys).values_list('key','value')) 
Problemi correlati