Django REST Framework报FieldError:无法解析‘data’为字段求助
问题排查与解决
错误原因
出现FieldError: Cannot resolve keyword ‘data’ into the field. Choices are: id, nome的核心原因有两个:
- 字段不存在:你的
Teste模型仅包含id和nome两个字段,data并非模型定义的字段,因此Teste.objects.get(data=request.data)这句代码会触发ORM字段查找失败的异常。 - 逻辑错误:这是一个用于创建数据的POST接口,但你错误地使用
get方法去查询数据库,完全违背了创建新实例的业务逻辑。
修正后的代码
修正后的view代码
from .models import Teste from .serializer import TesteSerializer from rest_framework.decorators import api_view from rest_framework.response import Response @api_view(['POST']) def create_teste(request): # 直接将请求数据传入序列化器,DRF会自动完成数据解析 serializer = TesteSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) else: return Response(serializer.errors)
关键修正点
- 删除了错误的
Teste.objects.get(data=request.data)查询语句,创建数据无需预先查询数据库。 - 将
request.data作为data参数传入序列化器,这是DRF中创建模型实例的标准写法。 - 移除了手动调用
JSONParser的代码,api_view装饰器已经自动处理了请求数据的解析工作。
内容的提问来源于stack exchange,提问作者Castro
相关产品推荐
相关产品推荐

