Как добавить значения для проверенных строк с помощью 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>