我想知道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'是运行上述过滤器查询的管理器函数。知道怎么做这个吗?我不反对在设置管理器中迭代结果,因为我可以将它们存储起来以供日后使用......我无法想象如何创建一个“全局”模型变量。
非常感谢任何帮助!
答案 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 此函数获取主键列表并返回映射到键的模型的字典。听起来这正是你想要的?