Я хочу добавить языковой выбор в стандартную django-registration. Я попытался выполнить этот урок от dmitko. Форма отображается правильно, но дополнительные данные (локаль) не сохраняются.добавление дополнительного поля в django-registration с использованием сигналов
Я определил пользовательскую модель:
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)
* EDIT * Я попытался двигаться в производство - только для испытания - и он поднял некоторые ошибки. Я изменил код, но профиль не сохраняется. Вот что я пробовал:
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)
Благодарим за помощь. Да, я импортировал это. Я попробовал что-то еще, показанное выше. – tpm
Итак, если вы уверены, что user_created вызывается, но по какой-то причине он не сохраняет дополнительные данные - используйте ведение журнала, чтобы проверить, что на самом деле происходит. КСТАТИ. AnymalsProfile ( user = user, locale = ProfileData ["locale"] ) - не нужно передавать user.id - только пользователь – dmitko