必要なプロファイルフィールドを許可する簡単な方法はありますか?Django-Userena:ユーザーのプロファイルにnull以外のフィールドを追加する
現在のdjangoプロジェクトでuserenaを使用しています。私はUserProfileという名前のカスタムプロファイルを持っています。このプロファイルは、start_year none-blank、null以外のフィールドを持っています。
class UserProfile(UserenaBaseProfile, PybbProfile):
user = models.OneToOneField(User, unique=True,
verbose_name=_('user'),
related_name='user_profile')
start_year = models.IntegerField(max_length=4)
私はサインアップ時にサインインする必要があります。既定のフォームをオーバーライドするために、以下で定義するSignupExtraFormを作成しました。
class SignupFormExtra(SignupForm):
start_year = forms.IntegerField(label=_(u'Initiation Year'),
min_value=1800,
max_value=datetime.now().year,
required=True)
def save(self):
new_user = super(SignupFormExtra, self).save()
new_user_profile = new_user.get_profile()
new_user_profile.start_year = self.cleaned_data['start_year']
new_user_profile.save()
# Userena expects to get the new user from this form, so return the new
# user.
return new_user
私は、私は以下のエラーを取得し、今修正された形を通して、新しいユーザーを追加しようと
:上記のコードでnew_user = super(SignupFormExtra, self).save())
を指しスタックトレース、と
profile_userprofile.start_year may not be NULL
。
これは、フォームから必要なデータを得る前に、作成および保存されているユーザープロファイルと関係があると思います。このデータをuser_creationプロセスに供給するか、ユーザープロファイルの作成を遅らせるかは簡単ですか? User
をpost_save
信号によって保存された後
おかげ SHON
Userenaはpost_save信号を使用しません。 'UserProfile'は' UserenaManager.create_user() 'が' SignupForm.save() 'で呼び出されたときに実際に作成されます。 – sarkybogmozg
あなたは正しいと私はこれを考えましたが、それはちょうど私に汚れているようです。私はいくつかの設定や他の何かを逃したことを望んでいます... – sarkybogmozg
残念これの問題を考えました。プロファイルの編集を設定するとき、フィールドは検証を強制しないため、ModelFormの代わりにカスタムフォームを使用するよう強制されます。 – sarkybogmozg