2016-06-28 3 views
-1

標準のdjangoユーザー認証フォームに会社名やウェブサイトなどのフィールドを追加するにはどうすればいいですか?私は既にusername、passwordなどのデフォルトフィールドを使いましたが、これらのフィールドも追加したいと思います。私はこれを行う方法がいくつかあることを知っていますが、あなたは何が最高だと思いますか? これを行う方法については、djangoのドキュメントを見てきましたが、どのように正確に行うべきかについてはまだ不明です。 ご協力いただければ幸いです。 おかげで、あなたはOneToOneField作成することによって、ユーザを拡張するための -Ramsey会社名、会社のウェブサイトなどのフィールドをDjangoユーザーフォームに追加するにはどうすればいいですか?

答えて

0

最も簡単な方法:上の

class Profile(models.Model): 
     user = models.OneToOneField(User,blank=True,null=True) 
     phone = models.CharField(max_length=200,blank=True,null=True) 
     location = models.CharField(max_length=200,blank=True,null=True) 

ので - あなたの特性

その後、あなたはあなたが提供する新しいユーザーをサインアップ引数としてからrequest.user:

profile = Profile.objects.create(user=user,phone=phone,location='') 

この時点で、ユーザーの余分なデータは、としてアクセス可能ですuser.profile.phone、user.profile.locationなどです。必要に応じて、フォームのユーザーの拡張子としてプロファイルモデルを使用できます。あなたのプロフィールモデルで

、ユーザーのプロパティにアクセスする必要がある場合:

class Profile(models.Model): 
     user = models.OneToOneField(User,blank=True,null=True) 
     phone = models.CharField(max_length=200,blank=True,null=True) 
     location = models.CharField(max_length=200,blank=True,null=True) 

     @property 
     def first_name(self): 
     return self.user.first_name # this will give you user's property 
+0

こんにちは感謝。私はまだ最後のステップで少し混乱しています。 基本的な考え方は、基本的なユーザー情報を入力する最初のビューがあり、次のビューにプロファイルフォーム/モードがあるということです。どのようにして2番目のフォーム/ウェブページに潜在的なユーザのリストからどのユーザを選択するかを教えてください。それは理にかなっていますか?これを行うために使用できるクッキーなど何かありますか?基本的に私はJohnが1ページ目にサインアップして2ページ目にフォームにユーザー名johnが登録されていることを知り、彼が入力しようとしているすべての情報ジョンの口座にリンクされていること。 ありがとうございました。 –

+0

あなたはいつでもプロファイルとプロファイルからユーザを参照することができます。したがって、ファーストネームにアクセスするのと同じ方法で、残りのユーザのプロパティにアクセスできます(例を参照)。 first_nameまたはp.user.first_name – dmitryro

関連する問題