Обновление пользователя 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)