程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了排序序列化数据 - Django - 获取 keyerror大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决排序序列化数据 - Django - 获取 keyerror?

开发过程中遇到排序序列化数据 - Django - 获取 keyerror的问题如何解决?下面主要结合日常开发的经验,给出你关于排序序列化数据 - Django - 获取 keyerror的解决方法建议,希望对你解决排序序列化数据 - 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 内,我尝试了

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 1.11 和 python 2.7 都严重过时了。

,

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

此处的文档:https://docs.djangoproject.com/en/3.1/topics/db/managers/

大佬总结

以上是大佬教程为你收集整理的排序序列化数据 - Django - 获取 keyerror全部内容,希望文章能够帮你解决排序序列化数据 - Django - 获取 keyerror所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:-获取