gpt4 book ai didi

python - 当用户想要更新他的信息时如何将数据提取到表单中? Django

转载 作者:行者123 更新时间:2023-12-01 04:03:30 25 4
gpt4 key购买 nike

我构建了一个功能,用户可以单击“更新个人资料”来编辑他们的名字、姓氏、用户名等。效果很好。但是,我希望更新表单填充他们之前输入的数据,而不是空白字段。

这是我的表格:

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

这是 View :

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)

这也很重要,因为如果他们在空白字段中输入更新的信息,他们就必须输入所有内容,但如果它们已填写,那么他们可以编辑他们想要的内容并提交。谢谢。

最佳答案

您在第二次 UpdateProfileForm() 调用中忘记了实例参数。应该是:

else:
update_profile_form = UpdateProfileFrom(instance=request.user)

关于python - 当用户想要更新他的信息时如何将数据提取到表单中? Django ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36099260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com