我制作了下面的序列化器。当我使用 POST 创建实例或使用 GET 获取实例时,就可以了。但是当我使用 PATCH 方法更新实例时,更新方法会获取一个空字典作为 valid_data。这是什么原因呢?如果我使用了根本错误的方法,请告诉我正确的方法。谢谢!
class UserSerializer(serializers.ModelSerializer):
# password = serializers.CharField(write_only=True)
class Meta:
model = get_user_model()
fields = ('id', 'email', 'first_name', 'last_name', 'password', )
read_only_fields = ('is_staff', 'is_superuser', 'is_active', )
extra_kwargs = {'password': {'write_only': True}}
def create(self, validated_data):
password = validated_data.pop('password')
user = self.Meta.model(**validated_data)
user.set_password(password)
user.is_active = True
user.save()
return user
def update(self, instance, validated_data):
print validated_data # returns {} - empty dict
return instance
Run Code Online (Sandbox Code Playgroud)
我使用 ModelViewSet 作为视图:
class UserViewSet(viewsets.ModelViewSet):
queryset = get_user_model().objects.all()
serializer_class = UserSerializer
Run Code Online (Sandbox Code Playgroud)
网址.py: …