预填充django表单导致“str”对象没有属性“get”

预填充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'

我试图预先填充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')
    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,**kwargs

UpdateProfile中的代码是什么?request.user通常是用户对象,而不是用户配置文件。我怀疑您应该传递instance=request.user.user\u profile或类似的内容。您的用户和用户配置文件模型是如何定义的?是的,很抱歉,这是一个旧代码,我已经更新了italso,返回renderrequest中的args是什么,'update_profile.html',args?args={'form':form}