Django运行ModelForm时提示'str'对象无_meta属性报错如何解决
错误原因
Django ModelForm 的 instance 参数要求传入绑定的模型类实例对象,你当前直接传入了从URL参数获取的字符串类型主键值,字符串没有Django模型内置的_meta属性,因此触发该报错。
修复方法
你需要先通过拿到的主键值从数据库查询到对应的cn_data_tables实例,再将实例传给表单的instance参数,同时建议补充异常处理避免记录不存在的场景:
修改后的views.py代码如下:
# 开头导入快捷查询方法 from django.shortcuts import get_object_or_404 def qc3_approval_view(request): # 1. 用GET参数的key作为主键查询对应模型实例,找不到则返回404 target_instance = get_object_or_404(cn_data_tables, sl_no=request.GET['key']) # 2. 将查询到的实例传给instance参数 cn_data_form = qc3_approval_form(instance=target_instance) # 后续原有逻辑保持不变
额外注意事项
你的models.py中存在一个笔误:定义的def __int__(self)方法如果是为了返回实例的可读表示,应该修改为def __str__(self),否则后续在需要打印模型实例的场景会出现预期外的问题。
内容的提问来源于stack exchange,提问作者Ramesh Kumar
相关产品推荐
相关产品推荐

