Я хочу добавить выбор локали в django-регистрацию по умолчанию.Я пытался следовать этому уроку от 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)