2016-12-06 3 views
0

У меня есть этот пользовательский сериалайзер: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":"[email protected]", 
"first name":"dsfxvxc" 
} 

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

Что такое случилось с моим кодом?

ответ

1

Вы устанавливаете ПгвЬЫат в emailfield

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

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

first_name = models.CharField(max_length=30) 
+0

Спасибо, но почему теперь мой новый Pasword сохраняется в 'простого Text' вместо «хеширования»? – Sajad

+0

ooh .. я заметил это, но забыл упомянуть, почему вы используете ваш на usermodel вместо модели пользователя django? –

+0

Мне нужно использовать 'usermodel'. – Sajad

Смежные вопросы