我想将区域设置选择添加到默认的django-registration。我尝试从dmitko开始学习本教程。表单正确显示,但未保存其他数据(区域设置)。
我定义了一个自定义模型:
class AnymalsProfile(models.Model):
user = models.ForeignKey(User, unique=True)
locale = models.CharField(max_length=2)
def __unicode__(self):
return u'%s %s' % (self.user, self.locale)
和表格:
from models import AnymalsProfile
from registration.forms import RegistrationFormTermsOfService
class UserRegistrationForm(RegistrationFormTermsOfService):
locale = forms.CharField(max_length=3, widget=forms.Select(choices=LOCALE_CHOICES),label='Language:')
字段显示正确,但未保存区域设置数据(配置文件)。我假设regbackend.py是我的问题:
from anysite.models import AnymalsProfile
def user_created(sender, user, request, **kwargs):
form = UserRegistrationForm(request.POST)
data = AnymalsProfile(user=user)
data.locale = form.cleaned_data["locale"]
data.save()
from registration.signals import user_registered
user_registered.connect(user_created)
*编辑* 我尝试进入生产 - 只是为了测试 - 它引发了一些错误。我修改了代码,但仍未保存配置文件。这是我试过的:
from anysite.models import AnymalsProfile
from anysite.forms import UserRegistrationForm
def user_created(sender, user, request, **kwargs):
form = UserRegistrationForm(request.POST)
if form.is_valid():
ProfileData = form.cleaned_data
profile = AnymalsProfile(
user = user.id,
locale = ProfileData["locale"]
)
profile.save()
from registration.signals import user_registered
user_registered.connect(user_created)
答案 0 :(得分:0)
你的代码import regbackend
中是否有某个地方?这应该是为了执行以下字符串。
from registration.signals import user_registered
user_registered.connect(user_created)
我的例子我在import regbackend
中有urls.py
。你也有这条线吗?
答案 1 :(得分:0)
我不知道为什么,但它不喜欢cleaning_data。现在可以使用以下方法:
def user_created(sender, user, request, **kwargs):
form = UserRegistrationForm(request.POST)
data = AnymalsProfile(user=user)
data.locale = form.data["locale"]
data.save()
感谢@dmitko的代码和支持。坚持下去!