Зависимые выпадающие списки

У меня есть 2 зависимых выпадающих списка, при изменении значения в первом списке, изменяются варианты выбора во втором списке. Я добавил в первичный выпадающий список значение по умолчанию, смысл в том, чтобы оно бралось из профиля пользователя. Но вторичный список на странице остается пустым, пока я не передерну первичный переключатель. Мне нужно видоизменить мой js файл, как это правильно сделать?

Для реализации я использовал статью.

load_gpu.js

$("#id_id_cs").change(function () {
    let url = $("#groupForm").attr("data-list-gpu-url");  // get the url of the `load_g_p_u` view
    let csId = $(this).val();  // get the selected cs ID from the HTML input

    $.ajax({                       // initialize an AJAX request
        url: url,                    // set the url of the request (= localhost:8000/main/ajax/load-g-p-unit/)
        data: {
            'id_cs': csId       // add the id_cs id to the GET parameters
        },
        success: function (data) {   // `data` is the return of the `load_gpu` view function
            $("#id_id_gpu").html(data);  // replace the contents of the city input with the data that came from the server
        }
    });
});

views.py

def load_gpu(request):
    id_cs = request.GET.get('id_cs')
    list_gpu = GPU.objects.filter(id_cs=id_cs).order_by('name_gpu')
    return render(request, 'main/gpu_dropdown_list_options.html', {'list_gpu': list_gpu})


class GroupCreateView(CreateView):
    template_name = 'main/group.html'

    model = Group
    form_class = GroupForm
    success_url = reverse_lazy('start')

    def get(self, request, id_group=None, *args, **kwargs):
        # form = self.form_class(initial=self.initial)
        id_current_cs = request.user.profile.id_cs
        form = self.form_class(initial={'id_cs': id_current_cs})
        context = {
            'form': form,
        }
        print('id_current_cs = ', id_current_cs)
        return render(request, self.template_name, context)

    def post(self, request, id_group=None, *args, **kwargs):
        error = ''
        if request.method == 'POST':
            form = GroupForm(request.POST)
            if request.POST.get('save') and form.is_valid():
                just_created = form.save(commit=False)
                just_created.Create_User = request.user
                just_created.id_filial = request.user.profile.id_filial
                just_created.id_cs = request.user.profile.id_cs
                just_created.save()
                return HttpResponseRedirect(reverse('main:edit_work', args=(just_created.id_group,)))

            else:
                error = 'Форма заполнена некорректно'
        form = GroupForm()

        context = {
            'title': 'Группа работ',
            'form': form,
            'error': error,
        }
        return render(request, 'main/group.html', context)

urls.py

urlpatterns = [
    path('ajax/load-g-p-u/', views.load_gpu, name='ajax_load_g_p_u'),
]

models.py

class CS(models.Model):
    id_cs = models.AutoField(primary_key=True)
    name_cs = models.CharField(max_length=256)

    id_filial = models.ForeignKey('Filial', models.DO_NOTHING, blank=True, null=True)

    def __str__(self):
        return self.name_cs


class GPU(models.Model):
    id_gpu = models.AutoField(primary_key=True)
    name_gpu = models.CharField(max_length=256)

    id_cs = models.ForeignKey('CS', models.DO_NOTHING, blank=True, null=True)

    def __str__(self):
        return self.name_gpu


class Group(models.Model):

    id_group = models.AutoField(primary_key=True)

    id_filial = models.ForeignKey('Filial', models.DO_NOTHING, related_name='filial')

    id_cs = GroupedForeignKey(CS, "id_filial", on_delete=models.SET_NULL, null=True, related_name='cs')
    id_gpu = GroupedForeignKey(GPU, "id_cs", on_delete=models.SET_NULL, null=True, related_name='gpu')

    name_group = models.CharField(max_length=256)
    short_description = models.CharField(max_length=256)

    creation_date = models.DateTimeField(auto_now=True, blank=True, null=True)
    start_date = models.DateField(auto_now=False, blank=True, null=True)
    end_date = models.DateField(auto_now=False, blank=True, null=True)

    Create_User = models.CharField(max_length=256, blank=True, null=True)

    def __str__(self):
        return self.name_group
Вернуться на верх