Django CRUD项目报userpost()不识别instance关键字参数错误求助
错误原因
- 核心错误出现在
views.py的update视图逻辑中,你误将模型类userpost当做表单类customerform来实例化:instance是Django ModelForm类的专属参数,用于绑定要修改的数据库记录,模型类的构造方法不支持该参数,直接调用userpost(instance=xxx)必然触发参数不匹配报错。- POST请求分支里还存在参数名拼写错误,你写的
isinstance=get_user_data应为instance=get_user_data。
- 附加小问题:
urls.py中更新接口的路径定义缺少分隔符,update<int:pk>/应改为update/<int:pk>/,否则路由匹配逻辑不符合常规REST风格,也容易出现路径匹配错误。
修正后的
update视图代码 #Updating the post def update(request,pk): get_user_data=get_object_or_404(userpost,pk=pk) # 替换为表单类customerform,不是模型类userpost form= customerform(instance=get_user_data) if request.method=='POST': # 修正拼写错误,参数是instance不是isinstance,同时用表单类实例化 form=customerform(request.POST,instance=get_user_data) if form.is_valid(): form.save() messages.success(request,'User data has been Updated') return redirect('read') context={'form':form} return render(request,'update.html',context)
补充说明
你在create视图里已经正确使用了customerform来实例化表单,更新逻辑复用同一个表单类即可,不需要调用模型类来生成表单对象。
内容的提问来源于stack exchange,提问作者Abu RayhaN
相关产品推荐
相关产品推荐

