Как заполнить выпадающий список из выбранного значения другого выпадающего списка в Django

У меня есть 2 модели, одна модель users, а другая videos. user_id действует как внешний ключ для модели videos. Я создал 2 выпадающих списка, используя теги select/option.
models.py

class Users(models.Model):
    name = models.CharField(max_length=20)
    def __str__(self):
        return self.name

class Videos(models.Model):
    user = models.ForeignKey(Users,on_delete=CASCADE)
    def __str__(self):
        return self.user.name

Я заполнил первый выпадающий список, получив всех пользователей из БД и отправив их в шаблон в файле views.py. Я хочу, чтобы при выборе одного из пользователей в первом выпадающем списке все видео, соответствующие этому пользователю, появлялись в качестве опций во втором выпадающем списке.

<div class="mb-3">
   <label class="py-1" for="Select_participant">Select Participant:</label>
   <select name = "selected_user" class="form-select" required aria-label="select example">
   {% for user in users %}
       <option value="{{user.id}}">{{user.name}}</option>
   {% endfor %}
   </select>
</div>

<div class="mb-3">
    <label class="py-1" for="URL">Select Video:</label>
    <select class="form-select" required aria-label="select example">
        <option value="/path">video1</option>
    </select>
</div>

Я не могу понять, как этого добиться. Я думал сначала отправить значение выбранного пользователя в бэкенд, затем отфильтровать видео по этому пользователю и снова вывести шаблон, но это будет очень сложно. Есть ли какие-нибудь простые способы достичь этого? Любая помощь будет принята с благодарностью.

Вы можете использовать htmx. При выборе первого выпадающего списка вы меняете html второго выпадающего списка, вызывая представление с выбранным пользователем. Это представление просто получает соответствующие видео и возвращает их в виде небольшого фрагмента html внутри вашей формы. Вы можете написать это прямо на JavaScript, jQuery и т.д., но htmx делает это намного проще. https://htmx.org/

Вот статья, которая более подробно объясняет, как использовать его в Django.

https://www.mattlayman.com/blog/2021/how-to-htmx-django/

Есть и другие. Просто погуглите htmx и django

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