我试图允许用户更新他们创建的列表的名称。但是,当我尝试发布数据时,我返回以下错误:
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']
答案 0 :(得分:0)
所以实际上您正在尝试使用 POST 请求进行更新,您必须检查您的代码是否已在此更新函数中到达,如果到达那里,则您必须在更新中传递 partial=True
否则 serailizer 将尝试验证所有必填字段,以便您可以更改为:-
serializer = serializer_class(user, data=data, partial=True)