django序列化出错

OngoingDC 2020-06-17 11:16:39
views.py中的post请求一使用DRF序列化就报错,报错信息:
KeyError: "Got KeyError when attempting to get a value for field `department` on serializer `CepingSerializer`.\nThe serializer field might be named incorrectly and not
match any attribute or key on the `dict` instance.\nOriginal exception text was: 'department'."


代码如下:
serializers.py

from rest_framework import serializers


class DepartmentSerializer(serializers.Serializer):
department = serializers.CharField(max_length=64)


class RankSerializer(serializers.Serializer):
rank = serializers.CharField(max_length=12)


class CepingSerializer(serializers.Serializer):
id = serializers.IntegerField()
department = DepartmentSerializer()
name = serializers.CharField(max_length=64)
IDcard = serializers.CharField(max_length=64)
password = serializers.CharField(max_length=256)
identity = serializers.CharField(source='get_identity_display')
rank_id = RankSerializer()
special_identity = serializers.CharField(max_length=64)
cePing = serializers.BooleanField(default=False)
ganBu_finished = serializers.CharField(max_length=256)
ganBu_unfinished = serializers.CharField(max_length=256)
banZi_finished = serializers.CharField(max_length=256)
banZi_unfinished = serializers.CharField(max_length=256)
status = serializers.CharField(max_length=1, default='0')


views.py

class CepingView(APIView):
def get(self, request):
"""获取所有测评者"""
ceping_queryset = Ceping.objects.all()
ser_ceping = CepingSerializer(ceping_queryset, many=True)
return Response(ser_ceping.data)

def post(self, request):
"""根据条件查询测评者信息"""
# 接受传递过来的查询条件,axios默认是json,字典类型('inputstr')--data('inputstr')
data = json.loads(request.body.decode('utf-8'))

# 使用ORM获取满足条件的信息,并把对象转换为字典格式
ceping_queryset = Ceping.objects.filter(
Q(department=data['inputstr']) | Q(status=data['inputstr'])).values()
# 用下面两句有问题
ser_ceping = CepingSerializer(ceping_queryset, many=True)
return Response(ser_ceping.data)
# 这两句没问题
# ceping_queryset = list(ceping_queryset)
# return JsonResponse({'data': ceping_queryset})
...全文
178 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
OngoingDC 2020-06-18
  • 打赏
  • 举报
回复
因为有多个对象,所以应该在序列化器后面加上many=True。忘记这一步了
OngoingDC 2020-06-17
  • 打赏
  • 举报
回复
没有吧,他这个字段是外键,肯定是对外键进行条件查询出错了
放风喽 2020-06-17
  • 打赏
  • 举报
回复
翻译的结果是department这个反序列化字段没找到对应的数据库字段,所以你应该对比一下serializer.py和model.py里面的department是不是拼错字母了
OngoingDC 2020-06-17
  • 打赏
  • 举报
回复
自动结帖哦哦
本课程是一个系列的django实战进阶开发教程,目标是带领大家快速上手实战,课程以最新版本django3.2为蓝本,深入django源码本身,通过内置的类视图来开发,即CBV模式开发,从最基础的类显示视图到类编辑视图再到混入视图,由浅入深,专注Django的高级知识,带你系统的玩转Django,无过多的依赖第三方库,进一步降低学习门槛,更加专注django框架本身!本课程将带你实现一个功能完备的商城系统,如:新闻管理、商品管理(包含多规格)、订单管理、购物车、快速下单、评论、地址、运费模板等常见的商城功能!除此之外,你还可以将本课程内容中涉及到的django类视图的高级用法作为参考资料,在以后的开发中用到的时候再翻阅。认真看完这个系列视频教程之后,您会深入理解django框架的高级知识以及开发流程,具备使用django上手开发实际项目的基本能力!本课程亮点一、少量的第三方依赖,降低学习门槛开发过程中依赖第三方库少,减少大家的进一步的学习理解成本,从而更加专注django框架本身!二、前端轻度结合vue.js,无需过多前端技能本项目将轻度结合vue.js以及fetch来完成一些异步请求,无需过多vue 知识,更贴合后端开发者,也更加靠近当下最热门的技术栈,为前后端分离项目开发打下坚实的基础!三、采用django本身序列化方法构造json,深入django框架本身深度使用Django本身的序列化器来序列化数据,构造一些异步操作的接口,通过这一深度使用对未来使用drf框架将打下坚实的基础,学习drf框架将变的非常容易。四、CBV模式开发,深入Django类视图本项目全部采用Django的类视图,深入学习类视图,不同的请求我们可以在类中使用不同的方法来处理,这样大大的提高了代码的可读性以及高度扩展性,更加便于二次开发!五、多规格产品功能,更符合实际需求网上千篇一律的教程都没有深入讲解多规格商品的实现思路,本专栏将手把手带你完成多规格功能,并且对JD及TB的两种多规格模式的利弊进行深入剖析!

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧