gpt4 book ai didi

python - "Expected a list of items but got type\"字典\"."

转载 作者:太空宇宙 更新时间:2023-11-04 04:15:49 25 4
gpt4 key购买 nike

我正在尝试构建一个 api 来更新我的用户的名字和姓氏。我在 HTTP 响应中收到以下错误

{
"non_field_errors": [
"Expected a list of items but got type \"dict\"."
]
}

我已经编写了以下 API 并尝试将补丁请求传递给它。

class UserSelfUpdateView(UpdateAPIView):
serializer_class = UserUpdateSerializer
permission_classes = [UserPermissions, ]

def update(self, request: Request, *args, **kwargs):
instance = User.objects.filter(id=self.request.user.id)
serializer = UserUpdateSerializer(instance, data=request.data, many=True)
serializer.is_valid(raise_exception=True)
serializer.save()

return Response({'success': True}, status=status.HTTP_200_OK)

上述请求的序列化器是:

class UserUpdateSerializer(serializers.ModelSerializer):

class Meta:
model = User
fields: ('id', 'first_name', 'last_name')

我尝试传递请求正文的格式是:

{
"first_name": "A",
"last_name": "B"
}

使用原因

instance = User.objects.filter(id=self.request.user.id)

是因为我想要的功能只有登录用户才能修改他的详细信息。

最佳答案

错误在这里

serializer = UserUpdateSerializer(instance, data=request.data, many=True)

改为

serializer = UserUpdateSerializer(instance, data=request.data)

如果传递 many=True 你需要传递一个查询集而不是一个实例

关于python - "Expected a list of items but got type\"字典\".",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55450044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com