2013-05-10 80 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因爲我想包括名字和姓氏字段包含在註冊時,我做了這種形式。

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

它給了我一個無值的密碼字段,它發出一個錯誤onsend「KeyError at/customer/registration_edit /'password'」onsend /usr/local/lib/python2.7/dist-packages/django/contrib /auth/forms.py in clean_password,第122行 – 2013-05-10 09:33:46

+0

您不希望在此表單上設置密碼,http://stackoverflow.com/a/10881992/188955 – JamesO 2013-05-10 09:52:28