0

私は基本的なdjango-registrationフォームを拡張することに成功し、フォームにカスタムフィールドがあり、正常に動作しています。今私を悩ませているのは、その動作方法です。DefaultBackendを拡張するregisterメソッドを使用して新しいバックエンドを定義しました。

class MyBackend(DefaultBackend):
   def register(self, request, **kwargs):

Userオブジェクトを外部キーとして保持するUserProfileモデルを作成しました

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    custom_filed = models.CharField(max_length=200, blank=True) 

定義された形式

class UserRegistrationForm(RegistrationForm):
    custom_field = forms.CharField(widget=forms.TextInput(attrs=attrs_dict))

    model = UserProfile

それはURLで提供されました

url(r'^accounts/register/$',  register, {'backend': 'app.regbackend.MyBackend','form_class':UserRegistrationForm},name='registration_register')

正常に動作し、custom_fieldはregisterメソッドで定義した方法で保存されます。registerform(template)には、RegistrationForm(username、email、password)modelで定義されたフィールドしか表示されないため、custom_field手動で追加する必要があります。フォームクラス。モデル属性がを指しているため、その理由がわかりません。フォームクラスからUserProfile削除すると、custom_field表示されません。なぜですか。

4

0 に答える 0