2013-05-10 3 views
0

Я пытался изменить пользователя, используя форму, которую я использовал для создания пользователя, Я понятия не имею, почему я получаю сообщение об ошибке. Пользователь с этим именем пользователя уже существует.Редактирование пользователей в Django

Вот мое мнение:

def registration_edit(request): 
    """ Registration Step2: 
           The user should be authenticated to reach this step. 
           Authentication is provided by first step or user login. 
    """ 
    if request.user.is_authenticated(): 
     if request.POST: 
      form = RegistrationForm(request.POST or None, instance=request.user) 
      if form.is_valid(): 
       form.save() 
       return HttpResponseRedirect(reverse('reg_step_2')) 
     else: 
      form = RegistrationForm(instance=request.user) 
     page = 'account' 
     title = 'Editing User Registration' 
     context = {'title': title, 'form': form, 'page': page} 
     template = 'customer/registration.djhtml' 
     return render_to_response(template, context, context_instance=RequestContext(request))   
    else: 
     messages.info(request, '<strong>Note</strong>: You must logged in to edit your account.') 
     return HttpResponseRedirect('/') 

forms.py Я сделал эту форму, потому что я хочу, чтобы включить ПгвЬЫате и LastName поле включения в регистрации.

from django import forms 
    from django.contrib.auth.models import User 
    from django.contrib.auth.forms import UserCreationForm 

    class RegistrationForm(UserCreationForm): 
     class Meta: 
      model = User 
      exclude = ('is_staff', 'is_active', 'is_superuser', 'last_login', 'date_joined', 'groups', 'user_permissions', 'password') 

и вот мой шаблон

<form class="form-horizontal" action='.' method="POST"> 
    {% csrf_token %} 
    <fieldset> 
     <div id="legend"> 
      <legend class=""> 
       {{ title|title }} 
      </legend> 
     </div> 
     {% for f in form %} 
     <div class="control-group"> 
      <label class="control-label" for="username">{{ f.label }}</label> 
      <div class="controls"> 
       {{ f }}&nbsp;<i style="color: orange">{{ f.errors|striptags }}</i> 
      </div> 
     </div> 
     {% endfor %} 
     <div class="controls"> 
      <button class="btn btn-success"> 
       Continue 
      </button> 
     </div> 
    </fieldset> 
</form> 

Кто-нибудь сказать мне, где я бездельничал здесь? Любая помощь будет высоко оценена.

ответ

1

Ваш от наследуется от UserCreationForm, который cleans the username field.

В этом случае вместо этого указывается UserChangeForm.

+0

Он дает мне поле «Пароль» с «Нет значения», и он выплевывает сообщение об ошибке «Включение//auth/forms.py в clean_password, строка 122 –

+0

Вы не хотели бы устанавливать пароль в этой форме, http://stackoverflow.com/a/10881992/188955 – JamesO

Смежные вопросы