如何在 Django rest 框架中执行 serializer.save() 时更新模型对象的 ,只有一个字段数据?



所以这是我的序列化程序类:


class HeroSerializer(serializers.ModelSerializer):
class Meta:
model=Hero
fields=['id','name','secret_identity']

和我的观点:

@api_view(['PUT', ])
def api_hero_update(request, name):
try:
character = Hero.objects.get(name=name)
except:
return Response(status=status.HTTP_404_NOT_FOUND)
serializer = serializers.HeroSerializer(character, data=request.data)
message={}
if serializer.is_valid():
serializer.save()
print(serializer.data)
message["success"]="Update Successful"
return Response(data=message)
return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)

让模型对象具有字段名称和secret_identity。 我只想更新它的名称,但行

serializer = serializers.HeroSerializer(character, data=request.data)

不允许我只更新一个字段. 如何只更新一个字段?

您必须将partial=True属性添加到序列化程序对象。

serializer = serializers.HeroSerializer(character, data=request.data, partial=True)

通过重写序列化程序update方法:

class HeroSerializer(serializers.ModelSerializer):
class Meta:
model=Hero
fields=['id','name','secret_identity']

def update(self, instance, validated_data):
instance.secret_identity = validated_data.get('your field name', 'defaultvalue')
instance.save()
return instance

不要忘记将模型保存在update方法中,否则更改将不会持久保存在数据库中。如果您需要更多信息,DRF 文档中对此进行了描述。

最新更新