Как использовать вход HTML <select> тега в качестве значения для получения данных Django Models, которые имеют этот конкретный вход в качестве одного из своих данных?

Я использую тег HTML <select> для того, чтобы пользователь мог выбрать название проекта, где проект - это QuerySet в Django Model. Поэтому я хочу использовать это значение для отображения пользователю других данных, связанных с этим проектом. Имя HTML <select> - select_project. В моем views.py я использую значение request.POST['select_project'] и храню его в переменной selected_project. Чтобы получить другие данные в QuerySet, я использовал Project.objects.filter(title=selected_project) и сохранил их в переменной displayed_project, которую затем использовал в представлении, где пользователь видит всю информацию об этом QuerySet.

Но когда пользователь переходит к представлению, он ничего не получает. Только пустой <QuerySet[]>. Пожалуйста, не могли бы вы подсказать, как это можно обойти?

<select class="select_project" name="select_project">
    {%for project in projects%}
    <option value="" name='select_project'>{{project.title}}</option>
    {%endfor%}

Views.py

    def overview(request):
        if request.method=='POST':
            selected_project=request.POST['select_project']
            displayed_project=Project.objects.filter(title=selected_project)
            return render (request, 'core/overview.html', {
            'displayed_project':displayed_project
            })

Спасибо!

Попробуйте заполнить значение и имя в теге значением каждого идентификатора проекта или названия. Например:

<select class="select_project" name="select_project">
    {%for project in projects%}
    <option value="{{project.id}}" name='{{project.title}}'>{{project.title}}</option>
    {%endfor%}

Если снова возникнет проблема, пожалуйста, напишите здесь

Я решил эту проблему. Итак, я не знал, что мой View получает значение тега <select>, а не его содержимое. Поэтому я добавил project.id к значению тега <select>. После этого, получив данные POST, я отфильтровал QuerySet по ID следующим образом: Project.objects.filter(pk=selected_project) и в конце я получил данные на странице обзора.

Спасибо!

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