select_related() 和 value() 如何组合? (2016)
How to combine select_related() and value()? (2016)
我又问这个问题了(it was asked back in 2009),
We know there is a values()
method of QuerySet, when there is a
foreignkey (author, for example), it result like:
[{ 'author_id':3, ... }, ...]
I want a result like:
[{ 'author':{'name':'dave',...}, ... }, ...]
新版本的 Django 有什么变化吗?
我想将查询集转换为列表和字典的组合,可以吗?
然后我会把这个对象放到一个更大的对象中来序列化它。这也是我不想马上连载的原因。
您可以通过 values()
without the necessity to use select_related()
访问相关字段(只有这些将被提取而无需后续查找):
MyModel.objects.values('author__id', 'author__name')
这将return以下结构:
[{'author__id': 1, 'author__name': 'Dave'}, {...}]
如果您在嵌套结构中需要它,则必须在之后对其进行转换。
请注意,对于 M2M 关系,此 return 每个 M2M 关系一个列表条目,因此可能不是预期的效果。但是对于 OneToOne/ForeignKey 关系,它工作得很好。
编辑:对于 M2M 关系 annotate()
与 values()
结合使用效果很好。
我又问这个问题了(it was asked back in 2009),
We know there is a
values()
method of QuerySet, when there is a foreignkey (author, for example), it result like:[{ 'author_id':3, ... }, ...]
I want a result like:
[{ 'author':{'name':'dave',...}, ... }, ...]
新版本的 Django 有什么变化吗?
我想将查询集转换为列表和字典的组合,可以吗?
然后我会把这个对象放到一个更大的对象中来序列化它。这也是我不想马上连载的原因。
您可以通过 values()
without the necessity to use select_related()
访问相关字段(只有这些将被提取而无需后续查找):
MyModel.objects.values('author__id', 'author__name')
这将return以下结构:
[{'author__id': 1, 'author__name': 'Dave'}, {...}]
如果您在嵌套结构中需要它,则必须在之后对其进行转换。
请注意,对于 M2M 关系,此 return 每个 M2M 关系一个列表条目,因此可能不是预期的效果。但是对于 OneToOne/ForeignKey 关系,它工作得很好。
编辑:对于 M2M 关系 annotate()
与 values()
结合使用效果很好。