DRF обновление ни на один - PullRequest
0 голосов
/ 08 ноября 2018

Я понимаю, что это основное, но я дергаю за волосы. В моих предыдущих проектах это всегда можно было обновить. Я проверил прошлые проекты, чтобы сравнить, но это не обновляет и продолжает запрашивать значения. Я хотел бы, чтобы он принимал значения, если не ноль, и сохранял предыдущие существующие значения. также пытался partial=True, но это дает пустым в моих полях, что не то, что я хочу.

class UserRetrieveUpdateAPIView(generics.RetrieveUpdateAPIView):
    serializer_class = UserSerializer
    permission_classes = (IsAuthenticated, )
    queryset = User.objects.all()

    def get_object(self):
        return self.request.user

    def update(self, request, *args, **kwargs):
        context = { 'user': request.user }
        serializer = self.serializer(request.user, data=request.data)

        if serializer.is_valid(raise_exception=True):
            self.perform_update(serializer)
            instance = serializer.instance
            self.clear_cache(request.user)

Так что ни один не должен быть тем, что было раньше

print (serializer) #<User: demo@email.com>, data={'first_name': None, 'last_name': 'stupid', 'email': None, 'password': None}

Serializer

class UserSerializer(serializers.ModelSerializer):


    class Meta:
        model = User
        fields = ('first_name','last_name','email','password')

    def create(self, validated_data):
        user = User.objects.create(
            username=validated_data.get('username'),
            email=validated_data.get('email')
        )
        user.save()
        return user

    def partial_update(self, request, *args, **kwargs):
        kwargs['partial'] = True
        return self.update(request, *args, **kwargs)

    def update(self, instance, validated_data):
        first_name = validated_data.pop('first_name', None)
        print (first_name)

        for key, value in validated_data.items():
            if value != None:
                setattr(instance, key, value)
        instance.save()
        return instance
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...