【发布时间】:2014-04-29 07:49:00
【问题描述】:
我正在尝试在前端创建一个“编辑个人资料”表单。发生的情况是我的表单(我不是 100% 确定)尝试创建用户而不是查找当前用户并更新他的个人资料。所以我认为这就是问题所在。在这里检查了很多问题,但没有一个足够清楚。我要编辑的字段是电子邮件、名字和姓氏。 (另外我想加个uda
forms.py
class UpdateProfile(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(RegistrationForm, self).save(commit=False)
user.email = self.cleaned_data['email']
if commit:
user.save()
return user
views.py
def update_profile(request):
args = {}
if request.method == 'POST':
form = UpdateProfile(request.POST)
form.actual_user = request.user
if form.is_valid():
form.save()
return HttpResponseRedirect(reverse('update_profile_success'))
else:
form = UpdateProfile()
args['form'] = form
return render(request, 'registration/update_profile.html', args)
【问题讨论】: