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

Han*_*pan 15 django django-models

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

我有这样的查询:

self.filter(key__in=keys).values('key','value')
Run Code Online (Sandbox Code Playgroud)

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

{'some_key':'some value', 'some_other_key':'some_other_value'}
Run Code Online (Sandbox Code Playgroud)

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

settings = Setting.objects.get_keys(['some_setting','some_other_setting'])
print settings.some_setting # returns 'some value'
Run Code Online (Sandbox Code Playgroud)

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

任何帮助将不胜感激!

Dan*_*man 35

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

return dict(self.filter(key__in=keys).values_list('key','value'))
Run Code Online (Sandbox Code Playgroud)


Exe*_*ian 6

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

  • @tufelkinder,您也可以链接到`/ stable /`而不是特定的版本号,以始终指向最新稳定版本的文档 (3认同)