Обновление пользователя Django не работает

У меня есть этот пользователь сериализатор:

class SimpleUser(models.Model):
    class meta:
        abstract = True

    email = models.EmailField(_('email address'), blank=False)
    password = models.CharField(_('password'), max_length=128)
    first_name = models.EmailField(_('first name'), blank=True)

class UserSerializer(ModelSerializer):
    class Meta:
        model = SimpleUser

И это мое мнение:

class UserView(APIView):
    def patch(self, request, user_id):
        firstname = request.data.get('first_name', '')
        email = request.data.get('email', '')
        password = request.data.get('password', '')

        user = User.objects.get(id=user_id)
        serializer = UserSerializer(instance=user, data=request.data, partial=True)
        if serializer.is_valid():
            serializer.save()
            return Response(status=status.HTTP_200_OK)
        return Response(status=status.HTTP_400_BAD_REQUEST)

Я посылаю этот запрос JSON, но только password а также email обновляются и first_name не обновляется.

{
"password":"6524266",
"email":"HH@bb.com",
"first name":"dsfxvxc"
}

Я получаю статус 200 OK и может получить сохраненный объект в serializer.save()

Что не так с моим кодом?

1 ответ

Решение

Вы устанавливаете имя как поле электронной почты

first_name = models.EmailField(_('first name'), blank=True)

Меняет это на CharField или связанные поля, что-то вроде этого,

first_name = models.CharField(max_length=30)
Другие вопросы по тегам