Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更新模型对象';在django rest框架中执行serializer.save()时,是否只有一个字段数据?_Python_Django_Django Rest Framework_Django Serializer - Fatal编程技术网

Python 如何更新模型对象';在django rest框架中执行serializer.save()时,是否只有一个字段数据?

Python 如何更新模型对象';在django rest框架中执行serializer.save()时,是否只有一个字段数据?,python,django,django-rest-framework,django-serializer,Python,Django,Django Rest Framework,Django Serializer,下面是我的序列化程序类: 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.obje

下面是我的序列化程序类:


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)

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

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

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

通过重写序列化程序
更新方法:

类序列化程序(serializers.ModelSerializer): 类元: 模特=英雄 字段=['id','name','secret\u identity'] def更新(自身、实例、已验证的_数据): instance.secret\u identity=validated\u data.get('您的字段名','默认值') save()实例 返回实例

不要忘记将模型保存在
update
方法中,否则更改将不会持久保存在数据库中。如果需要更多信息,请参见。

中的说明。您必须向序列化程序对象添加
partial=True
属性。i、 用这个

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