0

フォーム.py

class UserProfileForm(forms.ModelForm):
    phone = forms.CharField(max_length = 15,widget = forms.TextInput(attrs = {'placeholder':'Enter mobile no. ','class':''}))
    profession = forms.CharField(max_length= 50,widget = forms.Select(choices = PROFESSION_CHOICES,attrs = {'class':''}))
    #email = forms.EmailField(label='Email address',max_length = 75,widget = forms.TextInput(attrs={'placeholder':'Email address.','class':''}))
    sex = forms.CharField(max_length = 20,label="I am :",widget=forms.Select(choices=SEX_CHOICES,attrs = {'class':''}))
    first_name = forms.CharField(max_length = 50,widget = forms.TextInput(attrs={'placeholder':'Please enter your real name.','class':''}))
    last_name = forms.CharField(max_length = 50,widget = forms.TextInput(attrs={'placeholder':'Enter last name.','class':''}))
    location = forms.CharField(max_length = 50,widget = forms.TextInput(attrs={'placeholder':'Enter your current location','class':''}))
    def clean_first_name(self):
        first_name = self.cleaned_data['first_name']
        if first_name == '':
            raise forms.ValidationError("This field is required.")
        return first_name

        def save(self,*args,**kw):
                    self.instance.first_name = self.cleaned_data.get("first_name")
                    self.instance.last_name = self.cleaned_data.get("last_name")
                    self.instance.sex = self.cleaned_data.get("sex")
                    self.instance.location = self.cleaned_data.get("location")
                    self.instance.profession = self.cleaned_data.get("profession")
                    self.instance.phone = self.cleaned_data.get("phone")
                    self.instance.save()
                    return self.instance





    class Meta:
        model = User
        fields = ('username','first_name','last_name','phone','sex','profession','location')

ビュー.py

def profile(request,nav="profile",template="profile.html",context = {},extra_context = None):
    if request.POST:
        if 'profileFormSubmit' in request.POST:
            pform = UserProfileForm(request.POST,instance = request.user)
            if pform.is_valid():
                try:
                    user = pform.save()
                    return redirect(profile,nav="profile")
                    except RuntimeError as e:
                    return HttpResponse(e)

エラー

The User could not be changed because the data didn't validate.

ライン

    user = super(UserProfileForm,self).save(*args,**kw) 

疑問に思う

このエラーを取り除くためにどのような変更を加える必要がありますか? どのように変更すればよいですか? すべての clean_field フォーム メソッドを削除しようとしましたが、それでも同じエラーが発生します。助けてください。事前に感謝します。

4

2 に答える 2

0

UserProfileForm のメタ クラスで 'username' を使用していたため、フォームは検証されませんでした。

于 2012-08-27T00:28:06.527 に答える
0

きれいにする前に、フォームで保存を呼び出しています。そして、save を 2 回呼び出しています。フォームの開始時に一度保存します。そして最後に1回。

pform.is_valid() は、チェックしないブール値を返します。

モデルフォームに関するドキュメント

于 2012-08-26T22:56:06.297 に答える