You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 10:15:34