Django FieldError求助:无法将'id'解析为Student模型字段
Django FieldError 问题排查与解决
访问路径/editstu/121时触发Django FieldError,错误信息:
无法将关键字'id'解析为字段,可选字段包括Age、Course_ID、DoB、Grade、Student_ID、Student_Name。
相关代码片段
views.py 中的 Editstu 函数
def Editstu(request,id): editstuobj = Student.objects.get(id=id) return render(request, 'editstu.html',{'Student':editstuobj})
urls.py 路由配置
urlpatterns = [ path("admin/", admin.site.urls), path('',views.showStudent), path('InsertStudent',views.InsertStudent,name="InsertStudent"), path('Insertcour',views.InsertCourse,name="InsertCourse"), path('editstu/<int:id>',views.Editstu,name="Editstu"), path('editcour/<int:id>',views.Editcour,name="Editcour"), # path('Update/<int:id>',views.updateemp,name="updateemp"), path('Deletestu/<int:id>',views.Deletestu,name="Deletestu"), path('Deletecourse/<int:id>',views.Deletecourse,name="Deletecourse"), ]
Index.html 中的链接代码
<td><a href="editstu/{{result.Student_ID}}">Edit</a></td> <td><a href="Deletestu/{{result.Student_ID}}" onclick="return confirm ('Are you sure to delete the record?')">Delete</a></td>
问题原因与修复方案
问题核心是你的Student模型未使用默认的id主键字段,而是以Student_ID作为唯一标识字段,但views.py的查询语句错误地用id=id匹配字段。
修改
views.py中的查询语句,将匹配条件替换为Student_ID=id:def Editstu(request,id): editstuobj = Student.objects.get(Student_ID=id) return render(request, 'editstu.html',{'Student':editstuobj})(可选但推荐)模板中使用Django的
{% url %}标签生成链接,避免硬编码路径出错:<td><a href="{% url 'Editstu' result.Student_ID %}">Edit</a></td> <td><a href="{% url 'Deletestu' result.Student_ID %}" onclick="return confirm ('Are you sure to delete the record?')">Delete</a></td>同理,若
Deletestu视图存在相同查询逻辑,需同步将查询条件改为Student_ID=id。
内容的提问来源于stack exchange,提问作者Harshal Bhavane
相关产品推荐
相关产品推荐

