class ProfileForm(forms.ModelForm): first_name = forms.CharField(required=False, max_length=30, label=u"Имя") last_name = forms.CharField(required=False, max_length=30, label=u"Фамилия") def __init__(self, *args, **kwargs): super(ProfileForm, self).__init__(*args, **kwargs) self.fields.keyOrder = ('first_name', 'last_name', 'location', 'sex', 'avatar') class Meta: model = UserProfile fields = ('first_name', 'last_name', 'location', 'sex', 'avatar') def clean_avatar(self): if self.cleaned_data.get('avatar'): if self.cleaned_data['avatar'].size > settings.MAX_AVATAR_FILE_SIZE * 1024: raise forms.ValidationError(u"Превышен максимальный размер аватары") return self.cleaned_data['avatar'] def save(self, request): usr = User.objects.get(pk=request.user.id) # Modify user usr.first_name = self.cleaned_data['first_name'] usr.last_name = self.cleaned_data['last_name'] usr.save() #forms.save_instance(self, UserProfile(user=usr)) self.cleaned_data['user'] = usr if self.cleaned_data.get('avatar'): avatar = Image.open(StringIO(self.cleaned_data['avatar'].read())) avatar.resize((63,63), Image.ANTIALIAS) output_avatar = StringIO() avatar.save(output_avatar) self.cleaned_data['avatar'].write(output_avatar.read()) return super(ProfileForm, self).save()