能够使用值返回嵌套字典吗?姜戈

Dor*_*ora 5 python django dictionary

假设我有一个名为的模型Blog,这就是该值的工作原理

>>> Blog.objects.values()
[{'id': 1, 'name': 'Beatles Blog', 'tagline': 'All the latest Beatles news.'}],
>>> Blog.objects.values('id', 'name')
[{'id': 1, 'name': 'Beatles Blog'}]
Run Code Online (Sandbox Code Playgroud)

但让我们说如果我想把这个名字变成另一个字典并得到这样的回报

[{'id': 1, 'blog': { 'name': 'Beatles Blog'}}]
Run Code Online (Sandbox Code Playgroud)

通过使用值或类似的东西可以实现上述目标吗?

我知道我可以做一些类似的事情

[{'id': blog.pk, 'blog': {'name': blog.name}} for blog in blogs]

预先感谢我的好奇心

roo*_*oob 5

这是不可能使用的values

你建议的方法效果很好。

如果您的模型上有很多额外的字段,并且只需要这两个字段,则性能改进将是首先使用值加载您需要的字段,然后对它们执行列表理解以按照您指定的方式重新格式化。

这可以避免不必要地查询数据库中不需要的字段。

  • 实际上,values() 不会将数据加载到内存中,它返回一个 QuerySet 对象,类似于 sql 语句。直到您迭代查询集(在本例中为“for blog in blogs”部分)时,才会执行查询并加载数据。水 Malooooone (3认同)