Проблема такая: решил расширить юзера, добавил поле - nickname(поле выбрано в качестве тестового, суть в том, что бы просто научиться добавлять поля. какие - не важно):
#models.py
class UserProfile(models.Model): user = models.ForeignKey(User, unique=True, related_name='profile') nick_name = models.CharField(max_length=15)
Затем расширил UserCreationForm, что бы можно было вводить данные в новое поле при регистрации:
#views.py
class MyRegisterForm(UserCreationForm): print "OK!" nick_name = forms.CharField(max_length=30, required=True, widget=forms.TextInput) print "Ook" class Meta: model = UserProfile def save(self, commit=True): if not commit: raise NotImplementedError("Can't create User and UserProfile without database save") print "Saving..." user = super(MyRegisterForm, self).save(commit=False) user.nick_name = self.cleaned_data["nick_name"] user_profile = UserProfile(user=user, nick_name=self.cleaned_data['nick_name']) user_profile.save() print "Saving complete" return user, user_profile
Сама функция регистрации:
#views.py
def reg(request): if request.method =='POST': form = MyRegisterForm(request.POST) if form.is_valid(): username = form.cleaned_data['username'] print username password1 = form.cleaned_data['password1'] print password1 password2 = form.cleaned_data['password2'] print password2 nick_name = form.cleaned_data['nick_name'] print nick_name form.clean_username() if password1 == password2: new_user = form.save() return render_to_response('registration/registration_complete.html') else: print "Password error" return render_to_response('registration/registration_fail.html') else: print "FORM error" #ТУТ ВАЛИТСЯ :( return render_to_response('registration/registration_fail.html') else: form = UserCreationForm() # An unbound form return render_to_response('registration/registration_new_user.html', { 'form': form, },context_instance=RequestContext(request))
В настройки добавил:
#settings.py
AUTH_PROFILE_MODULE = 'registration.UserProfile'
Шаблон регистрации:
#registration_new_user.html
{% extends "base.html" %} {% block content %} <h1>Регистрация пользователя</h1> <form action="registration" method="post"> {% if form.error_dict %} <p class="error">Пожалуйста исправьте нижеприведённые ошибки.</p> {% endif %} {% if form.username.errors %} {{ form.username.html_error_list }} {% endif %} <label for="id_username">Логин:</label><br> {{ form.username }}<br> {% if form.password1.errors %} {{ form.password1.html_error_list }} {% endif %} <label for="id_password1">Пароль:</label><br> {{ form.password1 }}<br> {% if form.password2.errors %} {{ form.password2.html_error_list }} {% endif %} <label for="id_password2">Пароль (повторите):</label><br> {{ form.password2 }}<br> {% if form.nick_name.errors %} {{ form.nick_name.html_error_list }} {% endif %} <label for="id_nick_name">Пароль (повторите):</label><br> {{ form.nick_name }}<br> <br> <input type="submit" value="Зарегистрировать" /> </form> {% endblock %}
В итоге:
-при регистрации форма спотыкается на if form.is_valid()
-в шаблоне поле так же не отображается
Помогите советом, пожалуйста.
Заранее благодарен.