用户:[“此字段是必需的。”] 在 DRF 中

时间:2021-04-18 03:20:20

标签: django django-rest-framework

我试图允许用户更新他们创建的列表的名称。但是,当我尝试发布数据时,我返回以下错误:

user: ["This field is required."]

我绞尽脑汁试图解决这个问题,对用户名等进行了硬编码,但我一直空着。如果有更多专业知识来帮助我,我将不胜感激。

这是我的观点:

class UpdateUserListViewSet(viewsets.ModelViewSet):
        serializer_class = UserListSerializer
        queryset = UserList.objects.all()

        def update(self, instance, validated_data):
            serializer_class = UserListSerializer

            if self.request.method == "POST":
                list_id = request.data.get('id')
                user = UserList(user=self.request.user.id)
                list_name = request.data.get('list_name')
                data = {'id':int(list_id), 'list_name': list_name}
                serializer = serializer_class(user, data=data)
                
                if serializer.is_valid():
                    serializer.update()

                    return Response({'status' : 'ok'}, status=200)
        
                else:
                    return Response({'error' : serializer.errors}, status=400)

这是我的序列化器:

class UserListSerializer(serializers.ModelSerializer): 
    class Meta:
        model = UserList
        fields = ['id', 'user', 'list_name']

1 个答案:

答案 0 :(得分:0)

所以实际上您正在尝试使用 POST 请求进行更新,您必须检查您的代码是否已在此更新函数中到达,如果到达那里,则您必须在更新中传递 partial=True 否则 serailizer 将尝试验证所有必填字段,以便您可以更改为:-

serializer = serializer_class(user, data=data, partial=True)