Django - 查询结果为'associative'dict?

时间:2011-01-24 11:06:46

标签: django django-models

我想知道Django中是否有任何方便的帮助器会将查询结果返回到更“可用”的格式,因此我不必在我的视图中迭代它们。

我有这样的查询:

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

我最终想要的是一个看起来像

的对象
{'some_key':'some value', 'some_other_key':'some_other_value'}

所以在我的模型中,我可以这样做:

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

其中'get_keys'是运行上述过滤器查询的管理器函数。知道怎么做这个吗?我不反对在设置管理器中迭代结果,因为我可以将它们存储起来以供日后使用......我无法想象如何创建一个“全局”模型变量。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:30)

如果您使用values_list而不是values,它将返回一组两元组,然后您可以将其传递给dict()以创建字典:

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

答案 1 :(得分:4)

我认为你在寻找的是:http://docs.djangoproject.com/en/stable/ref/models/querysets/#in-bulk 此函数获取主键列表并返回映射到键的模型的字典。听起来这正是你想要的?