我再次问这个问题(it was asked back in 2009),
我们知道有一个
values()
方法的QuerySet,当有一个 foreignkey(例如作者),结果如下:[{ 'author_id':3, ... }, ...]
我想要一个结果:
[{ 'author':{'name':'dave',...}, ... }, ...]
在较新版本的Django中有什么变化吗?
我想将查询集转换为列表和字典的组合,是否可能?
然后我会将此对象放入一个更大的对象中以进行序列化。这就是我不想马上序列化的原因。
答案 0 :(得分:14)
您可以通过values()
访问相关字段,而无需使用select_related()
(只有在没有后续查询的情况下才能获取这些字段):
MyModel.objects.values('author__id', 'author__name')
这将返回以下结构:
[{'author__id': 1, 'author__name': 'Dave'}, {...}]
如果您需要在嵌套结构中使用它,则必须在之后对其进行转换。
请注意,对于M2M关系,每个M2M关系返回一个列表条目,因此可能不是所需的效果。但对于OneToOne / ForeignKey关系,它可以正常工作。