2016-12-06 26 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請求,但只有passwordemail更新和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

哦..我注意到,但忘了提及,爲什麼你使用你的usermodel而不是django用戶模型? –

+0

我需要使用'usermodel'。 – Sajad