Как добавить значения для проверенных строк с помощью javascript

Я разместил похожий вопрос в предыдущем сообщении, но я размещаю его снова, потому что то, чего я пытаюсь достичь, немного яснее.

Мы выводим список учеников в виде таблицы. Если мы установим флажок и нажмем кнопку Добавить учителя, мы хотим, чтобы имя текущего вошедшего в систему учителя было добавлено в поле учителя выбранной строки. Вы можете получить имя текущего зарегистрированного пользователя с помощью {{request.user.name}}. . И я хочу, чтобы оно было сохранено в БД, отправив его на сервер.

      <table class="maintable">
        <thead>
           <tr>
            <th class="text-black text-center text-nowrap bg-secondary font-weight-bold sticky-top-custom">Name</th>
            <th class="text-black text-center text-nowrap bg-secondary font-weight-bold sticky-top-custom">Age</th>
            <th class="text-black text-center text-nowrap bg-secondary font-weight-bold sticky-top-custom">Register Date</th>
            <th class="text-black text-center text-nowrap bg-secondary font-weight-bold sticky-top-custom">Teacher</th>
            <th class="text-black text-center text-nowrap bg-secondary font-weight-bold sticky-top-custom">Select</th>
          </tr>
        </thead>

        <tbody>
          {% for student in students %}
          <tr student-id="{{ student.id }}">
            <td>{{ student.name }}</td>
            <td>{{ student.age }}</td>
            <td>{{ student.register_date }}</td>
            <td>{{ student.techer }}</td>
            <td><input type="checkbox"></td>
          </tr>
          {% endfor %}
        </tbody>
      </table>
      <input type="button" value="Add Techer" class="addtecher">

Текущая информация о студентах изменена следующим образом.

urls.py

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

views.py

def edit_student(request, id):
student = get_object_or_404(Student, pk=id)
edited_student, errors = Student.student_form_validation(request)

if errors:
    return JsonResponse({'code': 'error', 'error': errors})

student.name= edited_student.name
student.age = edited_student.age
student.register_date = edited_student.register_datae
student.teacher = edited_student.teacher
student.save()

return JsonResponse({'code': 'success'})

models.py

class Student(models.Model):
     ....
    def student_form_validation(request):
    errors = collections.defaultdict(list)

    name = request.POST.get('name', '')
    age = request.POST.get('age', '')
    register_date = request.POST.get('register_date', '')
    teacher = request.POST.get('teacher', '')

    temp_student = types.SimpleNamespace()
    temp_student.name = name
    temp_student.age = age
    temp_student.register_date = register_date
    temp_student.teacher = teacher

    return temp_student, errors

student_list.html

<button type="button" class="student-edit-button" student-id="{{ student.id }}">Edit


<script>
    $('button.student-edit-button').click(function (e) {
    let elem = $(this);
    let studentID = elem.attr('student-id');
    let studenteditForm = $('#student-edit-form-' + studentID);
    const fields = ['name', 'age', 'register_date', 'teacher'];
    $.post('/student/' + studentID + '/edit/',

        studenteditForm.serialize(),
        function (data, status, xhr) {
            let code = data.code
            if (code === 'error') {
                for (let i in fields) {
                    let key = fields[i];
                    let labelElement = supportingeditForm.find('label[for=' + key + ']');
                    let container = labelElement.parent();

                    if (key in data.error) {
                        container.addClass('card-inverse-danger');
                        const msg = data.error[key][0];
                        let text = $('<div class="text-danger small" style="line-height: 1rem;">' + msg + '</div>')
                        labelElement.find('.text-danger').remove();
                        labelElement.append(text);
                    } else {
                        container.removeClass('card-inverse-danger');
                        labelElement.find('.text-danger').remove();
                    }
                }
            } else if (code === 'success') {
                window.location.href = '/student/';
            }
        })
});
</script>
Вернуться на верх