小编Ale*_*kin的帖子

Django REST 框架。更新得到空的 validated_data

我制作了下面的序列化器。当我使用 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: …

django django-rest-framework

6
推荐指数
1
解决办法
4346
查看次数

标签 统计

django ×1

django-rest-framework ×1