django序列化出错

OngoingDC OngoingDC 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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})
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
OngoingDC
脚本语言 37,737 成员 34,208 内容