gpt4 book ai didi

django-allauth - 覆盖默认注册表单

转载 作者:行者123 更新时间:2023-12-04 13:15:59 25 4
gpt4 key购买 nike

我正在使用此代码(在 forms.py 中)作为我的 allauth 自定义注册表单:

class RegistrationForm(UserCreationForm):
birth_date = forms.DateField(widget=extras.SelectDateWidget(years=BIRTH_DATE_YEARS))

class Meta:
model = get_user_model()
fields = ('username', 'email', 'password1', 'password2', 'first_name', 'last_name', 'gender', 'birth_date', 'city', 'country')

我当然指定了 ACCOUNT_SIGNUP_FORM_CLASS在 settings.py 中指向此表单并显示我放入其中的字段。但是,它不适用于提交,即使我放了 signup它永远不会被调用的方法。我试过 save但它仍然是一样的 - 在创建用户并将其保存到数据库时,它引发了一个错误,即我的自定义添加字段之一为空白。
那么,实现这一目标的正确代码是什么?

最佳答案

感谢 @rakwen 我做到了谁找到了正确的解决方案here .我编写了我的自定义适配器并将其放在我的应用程序中的 adapters.py 中:

from allauth.account.adapter import DefaultAccountAdapter

class AccountAdapter(DefaultAccountAdapter):
def save_user(self, request, user, form, commit=False):
data = form.cleaned_data
user.username = data['username']
user.email = data['email']
user.first_name = data['first_name']
user.last_name = data['last_name']
user.gender = data['gender']
user.birth_date = data['birth_date']
user.city = data['city']
user.country = data['country']
if 'password1' in data:
user.set_password(data['password1'])
else:
user.set_unusable_password()
self.populate_username(request, user)
if commit:
user.save()
return user

然后我指定了 ACCOUNT_ADAPTER在 settings.py 中指向该适配器,它终于开始工作了!

关于django-allauth - 覆盖默认注册表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36488743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com