2016-03-19 44 views
1

我構建了一個功能,用戶可以點擊「更新配置文件」來編輯他們的名字,姓氏,用戶名..etc。它工作正常。但是,我希望更新表單中填入之前輸入的數據,而不是空白字段。如何在用戶想要更新他的信息時將數據拉入表單? django

這是我的形式:

class UpdateProfileForm(forms.ModelForm): 
    username = forms.CharField(required=True) 
    email = forms.EmailField(required=True) 
    first_name = forms.CharField(required=False) 
    last_name = forms.CharField(required=False) 

    class Meta: 
     model = User 
     fields = ('username', 'email', 'first_name', 'last_name') 

    def clean_email(self): 
     username = self.cleaned_data.get('username') 
     email = self.cleaned_data.get('email') 

     if email and User.objects.filter(email=email).exclude(username=username).count(): 
      raise forms.ValidationError('This email address is already in use. Please supply a different email address.') 
     return email 

    def save(self, commit=True): 
     user = super(UpdateProfileForm, self).save(commit=False) 
     user.email = self.cleaned_data['email'] 

     if commit: 
      user.save() 

     return user 

這是訪問量:

def updateprofile(request): 
    args = {} 

    if request.method == 'POST': 
     update_profile_form = UpdateProfileForm(request.POST, instance=request.user) 

     if update_profile_form.is_valid(): 
      update_profile_form.save() 
      return HttpResponseRedirect(reverse('index')) 
    else: 
     update_profile_form = UpdateProfileForm() 

    args['update_profile_form'] = update_profile_form 
    return render(request, 'updateprofile.html', args) 

這也是重要的,因爲如果他們進入更新的信息爲空白的領域,卻不得不進入所有的人但如果他們被填補了,他們可以編輯他們想要的並提交。謝謝。

回答

2

您在第二個UpdateProfileForm()調用中忘記了實例參數。它應該是:

else: 
    update_profile_form = UpdateProfileFrom(instance=request.user) 
相關問題