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

使用JavaScript获取表格选中行ID 实现Django学生批量分配教师

解决方案

1. 调整urls.py

新增批量更新教师的路由,原有单条更新路由可保留不影响历史逻辑:

path('student/add_teacher/<int:id>/', views.add_teacher),
# 新增批量操作路由
path('student/batch_add_teacher/', views.batch_add_teacher)

2. 调整views.py

新增批量处理视图,使用ORM批量更新方法减少数据库操作次数,提升效率:

from django.http import JsonResponse

def add_teacher(request, id):
    student = Student.objects.get(pk=id)
    student.teacher = request.user.name
    student.save()
    return HttpResponseRedirect(f'/student/')

# 新增批量处理方法
def batch_add_teacher(request):
    if request.method == "POST":
        # 获取前端传递的选中学生ID列表
        student_ids = request.POST.getlist('student_ids[]')
        # 批量更新教师字段
        Student.objects.filter(id__in=student_ids).update(teacher=request.user.name)
        return JsonResponse({"status": "success"})

3. 调整student_list.html

给复选框补充ID属性,页面添加CSRF校验标识:

<!-- 页面任意位置添加CSRF令牌,用于POST请求校验 -->
{% csrf_token %}
<table id="student-list" class="maintable">
        <thead>
           <tr>
              <th>Name</th>
              <th>Age</th>
              <th>Register date</th>
              <th>Select</th>
          </tr>
        </thead>
        <tbody>
          {% for student in student %}
          <tr class="text-black tr-hover table-link text-center student" student-id="{{ student.id }}">
             <td>{{ student.name }}</td>
             <td>{{ student.age }}</td>
             <td>{{ student.register_date }}</td>
             <!-- 给复选框添加value存储学生ID -->
             <td><input type="checkbox" class="student-checkbox" value="{{ student.id }}"></td>
          </tr>
          {% endfor %}
        </tbody>
      </table>
      <button type="button" class="btn btn-secondary addteacher">Update Teacher</button>

4. 调整student_function.js

收集所有选中的学生ID,发起POST请求完成批量操作:

$(function () {
        $('button.addteacher').click(function (e) {
        // 收集所有选中的学生ID
        let selectedIds = [];
        $(".maintable input:checked").each(function() {
            selectedIds.push($(this).val())
        })
        // 未选中学生时提示
        if (selectedIds.length === 0) {
            alert("请先选择要操作的学生")
            return
        }
        var updateTeacher = confirm("업데이트하시겠습니까?");
        if (updateTeacher) {
            $.post('/student/batch_add_teacher/', {
                "student_ids[]": selectedIds,
                "csrfmiddlewaretoken": $("[name=csrfmiddlewaretoken]").val()
            }, function(res) {
                // 更新成功后刷新列表页
                window.location.href = '/student/'
            })
        }
    });
});

内容的提问来源于stack exchange,提问作者leesuccess

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:36:02