2011-01-24 8 views
12

Me preguntaba si había algún ayuda útil en Django que devolviera los resultados de una consulta a un formato más 'usuable', así que no tengo que repetirlos en mi opinión.Django - ¿Resultados de la consulta como dict "asociativo"?

Tengo una consulta como esta:

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

Lo que yo quiero terminar es un objeto que se parece a

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

Así que en mi modelo de lo que podía hacer algo como esto:

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

Donde 'get_keys' es una función de administrador que ejecuta la consulta de filtro anterior. ¿Alguna idea de cómo podría hacer esto? No me opondría a repetir los resultados en el Administrador de configuraciones porque podría almacenarlos para más adelante ... Sin embargo, no pude entender cómo crear una variable de modelo 'global'.

¡Cualquier ayuda sería muy apreciada!

Respuesta

27

Si utiliza values_list en lugar de values, devolverá un conjunto de tuplas de dos, que luego se puede pasar a dict() para crear un diccionario:

return dict(self.filter(key__in=keys).values_list('key','value')) 
Cuestiones relacionadas