大佬教程收集整理的这篇文章主要介绍了排序序列化数据 - Django - 获取 keyerror,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
版本信息:
Django: 1.11.2
Python 2.7
在我的应用程序中,我想按序列化程序返回的数据中的字段进行排序,但是,它引发了错误。
结果集为rest_framework.utils.serializer_Helpers.ReturnList
类型,数据如下(仅为样本,实际数据相当庞大)。
[orderedDict([(u'ID',941),('business_LOCATIOn',{'distance': 3.7249839781687317,'business': 941,u'ID': 916}),('business_detail',{'business_profile': u"Good solutions!",'website': NonE}),('business_images',[]),('business_service',[orderedDict([(u'ID',1587),('length_of_slots',12),('price',25.0),('business_group',NonE)])]),('premium',falsE)
]),orderedDict([(u'ID',1595),{'distance': 6.376269428282773,'business': 1595,u'ID': 1634}),{'business_profile': u'A long-term wellness.',5361),('length_of_booking_slot',u''),125.0),TruE)
])]
我得到的错误是 (KeyError('price',),'price')
vIEws.py,我使用此代码按价格排序。
sorted(business_serializer.data,key=lambda k: (k['price']))
请指出我做错了什么。另外,我想实现 ASC/DESC 功能。
注意:我尝试在序列化程序中实现 order_by
,因为我的数据具有不同的类别,并且每个类别都有一个价格,因此不会在结果级别进行排序。
编辑:编辑回复(添加高级密钥),添加到下面的行@H_419_34@
由于价格位于 business_service 内,我尝试了 我收到此错误 根据数据示例,您提供的与 您需要先访问 所以这应该可行: 仅供参考:django 1.11 和 python 2.7 都严重过时了。 您可以扩展模型的默认对象管理器。编写自定义对象管理器,您可以修改查询返回的查询集。 此处的文档:https://docs.djangoproject.com/en/3.1/topics/db/managers/sorted(business_serializer.data,key=lambda k: (k['business_service']['price']))
(TypeError('List inDices must be Integers,not str','List inDices must be Integers,not str')
sorted(business_serializer.data,key=lambda k: (-k['premium']))
的现有代码也运行良好。解决方法
'business_service'
关联的值是 list
,因此在您写入时为 TypeError
:sorted(business_serializer.data,key=lambda k: (k['business_service']['price']))
orderedDict
返回的列表中的k['business_service']
,然后才能访问密钥'price'
。sorted(business_serializer.data,key=lambda k: (k['business_service'][0]['price']))
以上是大佬教程为你收集整理的排序序列化数据 - Django - 获取 keyerror全部内容,希望文章能够帮你解决排序序列化数据 - Django - 获取 keyerror所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。