【发布时间】:2019-08-22 07:40:32
【问题描述】:
我正在尝试构建一个 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)
是因为我希望只有登录用户才能修改其详细信息的功能。
【问题讨论】:
标签: python django django-models django-rest-framework django-views