django序列化出错
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
views.py
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})
...全文
相关推荐
diary-django-rest-framework
日记-django-rest-framework 链接至pagina网站 Api
django-enum:一个 Enum 辅助类,提供用于模型字段的选择和常量
django 枚举 一个 Enum 辅助类,提供用于模型字段的选择和常量
django-modern-rpc:适用于现代Django的简单XML-RPC和JSON-RPC服务器
django-modern-rpc:适用于现代Django的简单XML-RPC和JSON-RPC服务器
详解Django model转字典的几种方法
平常的开发过程中不免遇到需要把model转成字典的需求,这篇文章主要介绍了Django model转字典的几种方法,非常具有实用价值,需要的朋友可以参考下
Python在线考试系统-大学毕业设计-基于Django+Django -Rest-Framework
Python在线考试系统-大学毕业设计-基于Django+Django -Rest-Framework


