Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 排序序列化数据-Django-获取密钥错误_Python_Django - Fatal编程技术网

Python 排序序列化数据-Django-获取密钥错误

Python 排序序列化数据-Django-获取密钥错误,python,django,Python,Django,版本信息: Django: 1.11.2 Python 2.7 在我的应用程序中,我希望按照序列化程序返回的数据中的字段进行排序,但是,它抛出了一个错误 结果集的类型为rest\u framework.utils.serializer\u helpers.ReturnList,下面给出了数据(仅示例,实际数据非常庞大) 我得到的错误是(KeyError('price',),'price') 在views.py中,我使用此代码按价格排序 sorted(business_serializer.da

版本信息:

Django: 1.11.2
Python 2.7
在我的应用程序中,我希望按照序列化程序返回的数据中的字段进行排序,但是,它抛出了一个错误

结果集的类型为
rest\u framework.utils.serializer\u helpers.ReturnList
,下面给出了数据(仅示例,实际数据非常庞大)

我得到的错误是
(KeyError('price',),'price')

在views.py中,我使用此代码按价格排序

sorted(business_serializer.data, key=lambda k: (k['price']))
请指出我做错了什么。此外,我还想实现ASC/DESC功能

注意:我试图在序列化程序中实现
order\u by
,因为我的数据有不同的类别&它们中的每一个都有一个价格,而不是在结果级别进行排序

编辑:编辑响应(添加了高级密钥),添加到行下方

由于价格在商务服务范围内,我试过了

sorted(business_serializer.data, key=lambda k: (k['business_service']['price']))
我得到了这个错误
(TypeError('list index必须是整数,而不是str'),'list index必须是整数,而不是str')


另外,
sorted(business_serializer.data,key=lambda k:(-k['premium'])
的现有代码工作正常。

您可以扩展模型的默认对象管理器。编写自定义对象管理器时,可以修改查询返回的查询集


这里的文档:

根据您提供的数据示例,与
'business\u service'
相关的值是一个
列表
,因此当您写入时,
类型错误

sorted(business\u serializer.data,key=lambda k:(k['business\u service']['price']))
您需要访问
k['business\u service']
返回的列表中的
OrderedDict
,然后才能访问键
'price'

因此这应该有效

sorted(business_serializer.data,key=lambda k:(k['business_service'][0]['price']))


仅供参考:django 1.11和python 2.7都已经严重过时。

这是一个现有的应用程序&我无法修改任何改变对象的内容,因为前端应用程序依赖于此数据。我有一种印象,即索引0不会在整个对象列表中循环,因此留下了它。然而,它奏效了。关于lambda的任何参考文献,大多数搜索都指向一些基本示例。
sorted(business_serializer.data, key=lambda k: (k['business_service']['price']))