私は基本的な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
表示されません。なぜですか。