预填充django表单导致“str”对象没有属性“get”
我试图预先填充django 2表单以更新模型预填充django表单导致“str”对象没有属性“get”,django,django-models,django-forms,Django,Django Models,Django Forms,我试图预先填充django 2表单以更新模型 def update_profile(request): if request.method == 'POST': form = UpdateProfile(request.POST, instance=request.user.userprofile) if form.is_valid(): form.save() return redirect('index'
def update_profile(request):
if request.method == 'POST':
form = UpdateProfile(request.POST, instance=request.user.userprofile)
if form.is_valid():
form.save()
return redirect('index')
else:
form = UpdateProfile(instance=request.user.userprofile)
return render(request, 'update_profile.html', args)
但这会导致
File "/usr/local/lib/python3.5/dist-packages/django/forms/widgets.py", line 254, in value_from_datadict
return data.get(name)
AttributeError: 'str' object has no attribute 'get'
class UpdateProfile(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(UpdateProfile, self).__init__(*args, *kwargs)
self.helper = FormHelper(self)
self.helper.form_method = "post"
self.helper.form_action = "/preferences"
self.helper.add_input(Submit('save', 'Save'))
class Meta:
model = UserProfile
fields = ["age", "gender", "phone", "genre_pref"]
我还尝试了UpdateProfileinitial=model_to_dictrequest.user,而不是UpdateProfileinstance=request.user
你知道怎么解决这个问题吗 superUpdateProfile,self.\uuuu init\uu*args,*kwargs应该是superUpdateProfile,self.\uuu init\u*args,**kwargsUpdateProfile中的代码是什么?request.user通常是用户对象,而不是用户配置文件。我怀疑您应该传递instance=request.user.user\u profile或类似的内容。您的用户和用户配置文件模型是如何定义的?是的,很抱歉,这是一个旧代码,我已经更新了italso,返回renderrequest中的args是什么,'update_profile.html',args?args={'form':form}