有沒有簡單的方法來允許所需的配置文件字段?Django-Userena:將額外的非空字段添加到用戶的配置文件
我在當前的django項目中使用userena。我有一個名爲UserProfile的自定義配置文件,它具有一個start_year非空白非空字段,如下所示。
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
當我嘗試添加一個新用戶通現在修改的形式,我得到下面的錯誤:
profile_userprofile.start_year may not be NULL
隨着堆棧跟蹤new_user = super(SignupFormExtra, self).save())
指出,在上面的代碼。
我認爲這與用戶配置文件創建並保存之前,我能夠從表單中提供所需的數據。有沒有簡單的方式將這些數據提供給user_creation過程,或者延遲創建用戶配置文件?
由於 與Shon
Userena不使用signal.The'UserProfile'在實際建立post_save的時候'UserenaManager.create_user()',是所謂的'SignupForm.save()'。 – sarkybogmozg 2012-01-30 22:55:22
你是對的,我想到了這一點,但它對我來說似乎很骯髒。我希望我錯過了一些設置或其他東西... – sarkybogmozg 2012-01-30 22:58:50
對不起,我想這個問題。當爲配置文件設置編輯時,我將被迫使用自定義表單而不是ModelForm,因爲該字段不會強制進行驗證。 – sarkybogmozg 2012-01-31 00:34:59