2016-11-21 6 views
1

にユーザ登録を行うには、 'パスワード'、 のメール '、 'first_nameの'、 'LAST_NAME'、 'PHONENUMBER'、 'アドレス'はどのようにウェブ全体を検索しましたし、私はいくつかのカスタムフィールドだから今、私は 「ユーザ名」を得た</p> <p>を追加することによって、私のユーザモデルを変更した任意の満足の行く答え を見つけるカントDjangoのRESTフレームワークAPI

代わりの

'ユーザ名'、 'パスワード'、 のメール '、 'first_nameの'、 'LAST_NAME'、---(これらはデフォルトです)---


これは私のmodels.py

です
from __future__ import unicode_literals 
from django.db import models 
from django.contrib.auth.models import User 

class userinformation(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    phonenumber = models.CharField(max_length=100) 
    address = models.CharField(max_length=200) 
    class Meta: 
     verbose_name_plural = "User Information" 
    def __str__(self): 
     return str(self.user)+' - '+self.phonenumber+' - '+self.address 

イム私は

 'username', 
     'password', 
     'email', 
     'first_name', 
     'last_name', 
     'phonenumber', 
     'address' 

を投稿することができた上でDjangoのRESTフレームワークAPIを作成し、これらの詳細とユーザーを登録しようとしている私は私のVEIに追加すべきか ws.pyとserializers.py

+0

シリアライザとビューを提供できますか? – marin

答えて

2

これらの他のフィールドを追加するには、シリアライザを操作する必要があります。あなたのモデル定義にフィールドrelated_name='user_information'を追加する場合は、これらのフィールドを公開するために、このような何かを行うことができます:

user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='user_information') 

を次に、あなたのようなシリアライザを作成:

class UserSerializer(serializers.HyperlinkedModelSerializer): 

    phonenumber = serializers.CharField(source='user_information.phonenumber') 
    address = serializers.CharField(source='user_information.address') 

    class Meta: 
     model = User 

     fields = ('username', 'password', 'email', 'first_name', 'last_name', 
      'phonenumber', 'address') 

とあなたのビューでそのシリアライザをインスタンス化:

class UserViewSet(viewsets.ModelViewSet): 
    queryset = User.objects.all() 
    serializer_class = UserSerializer 
    [...] 
+1

それは良い作品ですが、プレーンテキストのパスワードを保存し、私はエラー " 無効なパスワード形式または不明なハッシュアルゴリズム。"変数に投稿されたパスワードを保存する方法はありますか? u = User.objects.get(username = POST [username]) u.set_password(POST [パスワード]) u.save () –

+0

もしうまくいけば、それをupvoteして受け入れなければなりません:-)あなたのユーザーモデルのパスワードフィールドに無制限の値を設定しようとしているので、あなたの他の質問については、 '' update() 'ビューセットで](http://www.django-rest-framework.org/api-guide/viewsets/) –

関連する問題

 関連する問題