Calling Ajax from django template fails with error: Field 'id' expected a number but got 'populate_sections'

I have one URL in file as given below:-

urlpatterns = [
      path('edit_student/<student_id>', views.edit_student, name="edit_student"),
      path('populate_sections', views.populate_sections, name="populate_sections"),

In file edit student function is defined as follows:

def edit_student(request, student_id):
 form = UpdateStudentForm()
 context = {
           "form": form
return render(request, "edit_student.html", context)

Now the template edit_student.html has a Ajax call:-

$("#id_class_name").change(function(){ var class_name = $(this).val();

        url: 'populate_sections',
        type: 'GET',
        data: {class_name:class_name},
        dataType: 'json',
        success: (data) => {
            for( var i in data.context){
                $("#id_section_name").append("<option value='"+data.context[i].id+"'>"+data.context[i].name+"</option>");

The file function populate_section is declared as follows:-

def populate_sections(request):
is_ajax = request.headers.get('X-Requested-With') == 'XMLHttpRequest'
if is_ajax:
    if request.method == 'GET':
        class_name = request.GET.get("class_name")
        class_object = Classes.objects.get(id=class_name)
        sections = Sections.objects.filter(classes=class_object)
        return JsonResponse({'context': list(sections.values())})
    return JsonResponse({'status': 'Invalid request'}, status=400)
    return HttpResponseBadRequest('Invalid request')

Whenever i change the field which triggers Ajax function call i am getting the value error:

ValueError at /edit_student/populate_sections

Exception Value:
Field 'id' expected a number but got 'populate_sections'.

I understand that it is expecting the student id but how to do that.

Thanks & Regards Neha Singh

Back to Top