Как обрабатывать несколько объектов одновременно в файле views.py

Я делаю функцию, которая добавляет имя текущего пользователя, установив флажок в последнем столбце каждой строки и нажав кнопку "Добавить преподавателя".

Приведенный ниже код работает, когда установлен только один флажок. Как выбрать несколько флажков?

urls.py

path('student/add_teacher/<int:id>/', views.add_teacher, name='add_teacher')

views.py

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

student_list.html

<table id="student-list" class="maintable">
        <thead>
           <tr>
            <th>Name</th>
            <th>Age</th>
            <th>Sex</th>
            <th>Select</th>
          </tr>
        </thead>

        <tbody>
          {% for student in students %}
          <tr class="student">
            <td>{{ student.name }}</td>
            <td>{{ student.age }}</td>
            <td>{{ student.sex }}</td>
            <td><input type="checkbox"></td>
          </tr>
          {% endfor %}
        </tbody>
      </table>
      <button type="button" class="btn btn-secondary addteacher">Update Teacher</button>

student_list.js

$('button.addteacher').click(function (e) {
    var elem = $(".maintable input:checked").parents("tr");
    var studentID = elem.attr('student-id');
    var updateTeacher = confirm("will you update?");
    if (updateTeacher) {
        window.location.href = '/student/add_teacher/' + studentID + '/';
    } 
});

Придуманный мной способ - создать список выбранных идентификаторов с помощью ajax и передать его в views.py . Однако views.py не может обрабатывать несколько объектов, поскольку использует object.get(). В результате долгих поисков мы выяснили, что несколько объектов можно обрабатывать одновременно, используя транзакцию. Можно ли использовать транзакции? Уже несколько дней не могу решить эту проблему. Пожалуйста, помогите.

urls.py

path('student/add_teacher/', views.add_teacher, name='add_teacher')

views.py

def add_teacher(request):
    student = Student.objects.get(pk=id) ---> Can I use a transaction here?
    student.teacher = request.user.name
    student.save()
    return HttpResponseRedirect(f'/student_list/')

student_list.html

<table id="student-list" class="maintable">
    <thead>
       <tr>
        <th>Name</th>
        <th>Age</th>
        <th>Sex</th>
        <th>Select</th>
      </tr>
    </thead>

    <tbody>
      {% for student in students %}
      <tr class="student">
        <td>{{ student.name }}</td>
        <td>{{ student.age }}</td>
        <td>{{ student.sex }}</td>
        <td><input type="checkbox" class="Checked" student-id="{{ student.id }}"></td>
      </tr>
      {% endfor %}
    </tbody>
  </table>
  <button type="button" class="btn btn-secondary addteacher" onclick="fn_addTeacher()">Add Teacher</button>

student_list.js

 $(document).ready(function() {
$checkbox = $('.Checked');
$checkbox.click(checkArray);

function fn_addTeacher(){
    checkArray();
}

function checkArray(){
    var chkArray = [];
    chkArray = $.map($checkbox, function(el){
        if(el.checked) { return el.id };
    });
    console.log(chkArray);

    $.ajax({
        method: 'POST',
        url: "/student_list/",
        contentType:"application/json",
        data: {'chkArray': chkArray},
        traditional: true
    });
}

});

Вернуться на верх