django - Django-allauth 没有在自定义 SignupForm 上保存附加字段
问题描述
我无法正确扩展 django-allauth 注册表单。
我需要的字段显示在我的注册表单中,但 rappa_name 字段没有存储在我的数据库中。
我关注了这个线程:使用 django-allauth 时如何自定义用户配置文件
但无法让它工作。
我的forms.py:
from django import forms
from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm
User = get_user_model()
class UserCreationForm(UserCreationForm):
rappa_name = forms.CharField(label = "Rappa Name")
class Meta(UserCreationForm.Meta):
model = User
def signup(self, request, user):
user.rappa_name = self.cleaned_data['rappa_name']
user.save()
return user
和我的models.py
class User(AbstractUser):
# raooa name of user
rappa_name = CharField(_("Rappa Name"), default='', max_length=255)
def get_absolute_url(self):
return reverse("users:detail", kwargs={"username": self.username})
我确保我的 settings.py 有
ACCOUNT_FORMS = {
'signup': 'myproject.users.forms.UserCreationForm',
}
我需要将 rappa_name 保存为用户的字段,但目前没有保存
解决方案
已解决:我将 rappa_name 字段移至我的个人资料,然后将 SignupForm 更改为:
class UserCreationForm(SignupForm):
rappa_name = forms.CharField(max_length=30, label='Rappa Name')
def save(self, request):
# Ensure you call the parent classes save.
# .save() returns a User object.
user = super(UserCreationForm, self).save(request)
# Add your own processing here.
profile = user.profile
profile.rappa_name = self.cleaned_data['rappa_name']
profile.save()
# You must return the original result.
return user
我按照这里的文档https://django-allauth.readthedocs.io/en/latest/forms.html。
推荐阅读
- javascript - ReactJS 中名称的下拉列表
- c++ - 使用布尔值验证整数输入
- reactjs - 在 JHipster 中使用货币字段
- rust - 在实现返回可变引用的迭代器时,如何解决“无法为 autoref 推断适当的生命周期”?
- python - 如何让我的按钮增加我的迭代值并在网站上显示效果?(django)
- javascript - 如何在 mat-select 的两行中显示数据?
- java - 我对 firebase 和 imageView 有疑问
- ajax - 如何使用 Leaflet 中的 AJAX 调用更改从 GeoJSON 中获取的线条的样式?
- ios - 在 tableView.reloadData() 上修改 Realm 数据崩溃
- javascript - 如何防止功能组件中的重新渲染错误?