我有这个模型和序列化器:
class User(Model):
name = Charfield()
is_available = BooleanField()
class UserSerializer(ModelSerializer):
class Meta():
model = User
fields = '__all__'
我也有这个视图功能:
@api_view('GET', 'PATCH')
def current_user(request):
serializer = UserSerializer(request.user, context={'request': request})
if request.method == 'PATCH':
serializer = UserSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
PATCH请求返回200 OK,但不更改用户数据 . 看起来调用serializer.save()不足以将数据保存到模型中 . 那么,当ModelSerializer将数据保存到模型时呢?
1 回答
要更新对象,您应该将它的实例作为第一个参数传递给序列化程序,否则序列化程序将创建新对象 . 此外,您需要添加
partial=True
以允许部分更新,而不应该提供所有必需字段(不仅仅是实际更新)来更新用户 . 将代码更改为: