2017-09-20 10 views
1

現在、username、email、password1、password2を含むUserCreationFormの拡張機能に、アドレス、都市、州、国、pincode、セキュリティの質問と回答のようなフィールドを追加できます。はいの場合はどのように説明してください?Django UserCreationFormの拡張子

forms.py

class UserCreationForm(UserCreationForm): 
    email = EmailField(label=_("Email address"), required=True, 
     help_text=_("Required.")) 
    city= forms.CharField(label= _("City"),max_length=20, required=True) 
    state= forms.CharField(label= _("State"),max_length=20, required=True) 

    class Meta: 
     model = User 
     fields = ("username", "email", "password1", "password2","city","state") 

    def save(self, commit=True): 
     user = super(UserCreationForm, self).save(commit=False) 
     user.email = self.cleaned_data["email"] 
     user.city = self.cleaned_data["city"] 
     user.state = self.cleaned_data["state"] 

     if commit: 
      user.save() 
     return user 

答えて

1

現在、ユーザーモデルに他のフィールドがある場合は、UserCreationFormクラスを拡張しています。次に、forms.ModelFormを使用して他のフィールドを記述することができます。例

class UserForm(forms.ModelForm): 
    class Meta: 
     model = User 
     fields = ['username','name', 'email', 'phone', 
       'address','city','state', 'first_time'] 

ため

あなたは、カスタムフォームを使用する場合。

class UserForm(forms.Form): 
     name = forms.CharField(label= _("Name")) 
     address = forms.CharField(label=_("Address")) 
     etc. 
+0

すでに完了していることはたくさんあります。それはフレームワークの目的であり、何度も何度もホイールを作成しません。私はそれが受け入れられるべきだとは思わないが、何でも – Bestasttung

+0

そして、それは 'extends UserCreationForm'に答えない。ここであなたはちょうどそれを渡しています。 – Bestasttung

2

はいちょうどあなたが電子メールで行ったように実行します。

class UserCreationForm: 
    a_field = WhateverField(whatever='whatever'...) 

    class Meta: 
     model = User 
     fields = ("username", "email", "password1", "password2") 

をフィールドは、現在お使いの形で添加されます。

+0

okay cool..thanks! – Shefali

+0

どのように選択肢の中から特定の国にドロップダウンを使用するのですか? – Shefali

+0

'' '__init __()' 'メソッドでフィールドを変更することができます。 '' 'super '(UserCreationForm、self).__ init __(args、kwargs)' ''を呼び出すだけで、 。しかしもう一度それは別の質問です、あなたはそれに尋ねるべきです。 – Bestasttung