Django-Registrationにカスタムフィールドを追加できません
-
05-10-2019 - |
質問
私は拡張しました RegistrationFormUniqueEmail
class CustomRegistrationFormUniqueEmail(RegistrationFormUniqueEmail):
first_name = forms.CharField(label=_('First name'), max_length=30,required=True)
last_name = forms.CharField(label=_('Last name'), max_length=30, required=True)
def save(self, profile_callback=None):
new_user = super(CustomRegistrationFormUniqueEmail, self).save(profile_callback=profile_callback)
new_user.first_name = self.cleaned_data['first_name']
new_user.last_name = self.cleaned_data['last_name']
return new_user
その後、ビューを変更しました
# form = form_class(data=request.POST, files=request.FILES)
form = CustomRegistrationFormUniqueEmail(data=request.POST, files=request.FILES)
しかし、それでも4つのフィールドのみを含むデフォルトのフォームが表示されます。
解決
私たちは最近、そのようなフォームを実装しました。これが私たちがやったことです:
新しいを作成します
backend
(デフォルトのバックエンドからコピーして、開始するだけです)registration/ backends/ default/ custom/ # <- your new backend
...
新しいで
urls.py
バックエンド引数を調整します... { 'backend': 'registration.backends.custom.DefaultBackend' }, ...
aを作成します
forms.py
下custom
. 。このフォームを好みに合わせて調整します(フィールドと検証)の中に
registration/urls.py
適切なバックエンドを指します:# from registration.backends.default.urls import * from registration.backends.custom.urls import *
それはうまくいくはずです。特にこれは次のとおりです。
あなたの
custom/__init__.py
aがありますDefaultBackend
とのクラスget_form_class
方法:def get_form_class(self, request): """ Return the default form class used for user registration. """ return RegistrationForm
そして、あなたはあなた自身を輸入します
RegistrationForm
そのファイルでも:from registration.backends.custom.forms import RegistrationForm
他のヒント
手を握って、なぜそれが機能していないのかわかりませんが、私はあなたがそうすると確信しています いいえ Django-Registrationの編集が必要です views.py
...あなたはあなたの新しいを渡すことができます CustomRegistrationFormUniqueEmail
の議論として urls.py
.
ここを見ることができます 信号を使用したDjango-Registrationを拡張します そしてここ http://dmitko.ru/?p=546
所属していません StackOverflow