在使用DRF序列化器时,通过网页端,访问数据列表时提示:
Got AttributeError when attempting to get a value for field name
on serializer StudentSerializers
.
The serializer field might be named incorrectly and not match any attribute or key on the QuerySet
instance.
Original exception text was: ‘QuerySet’ object has no attribute ‘name’.
代码如下:
@api_view(['get', 'post'])
def student_create_list(request, format=None):
if request.method == 'GET':
# 获取所有的学生
objs = Student.objects.all()
# 序列化
serializer = StudentSerializers(instance=objs)
# 返回 drf 的响应
return Response(serializer.data)
elif request.method == 'POST':
# 创建学生
data = request.data
# 创建序列化器
serializer = StudentSerializers(data=data)
# 校验
if serializer.is_valid():
serializer.save()
# 返回获取到的数据
return Response(data=serializer.data, status=status.HTTP_201_CREATED)
else:
# 返回报错的内容
return Response(data=serializer.errors, status=status.HTTP_400_BAD_REQUEST)
报错内容如下
解决方法:
serializer = StudentSerializers(instance=objs, many=True)
至此完美解决问题: