Добавьте переменную django к тегу <select> - PullRequest
1 голос
/ 08 января 2020

У меня есть переменная CHOICES и ListView.

CHOICES = [
        ('ALL', 'ALL'),
        ('IT', 'IT'),
        ('FINANCE', 'FINANCE'),
        ('OTHER', 'OTHER'),
]

class HomePageView(ListView):
    model = Vacancy
    template_name = 'vacancy_list/vacancy_list.html'
    paginate_by = 10
    page_kwarg = 'vacancy'
    context_object_name = 'vacancies'
    queryset = Vacancy.objects.order_by('-published_date')

Как добавить CHOICES в тег html?

Я хочу заменить <option>IT</option> на что-то вроде для отдела в CHOICES

полный код

<div class="col-lg-3 col-md-4 col-xs-12">
    <select name="q2" class="form-control" id="exampleFormControlSelect1">
        {% if user.is_authenticated %}
            <option>{{ user.department }}</option>
        {% else %}
            <option>ALL</option>
        {% endif %}
             <option>IT</option>
             <option>Finance</option>
             <option>Other</option>
    </select>
</div>

Я пытался

{% for department in CHOICES %}
    <option value={{ department.0 }}>{{ department.1 }}</option>
{% endfor %}

, но CHOICES пуст

Ответы [ 3 ]

1 голос
/ 08 января 2020

Обычно вы используете ChoiceField или TypedChoiceField в форме Django, и в большей или меньшей степени структура <select> является автоматической, когда вы визуализируете форму в своем шаблоне .

Но для крайних случаев вы действительно можете передать его в свой шаблон, как показывает Тушортц в своем ответе.

1 голос
/ 08 января 2020

вам нужно что-то вроде

{% for department in CHOICES %}
  <option value={{ department.0 }}>{{ department.1 }}</option>
(% endfor %}

убедитесь, что CHOICES передается в качестве контекста с вашей точки зрения

0 голосов
/ 08 января 2020

Правильный путь -

{% for department in CHOICES %}
  <option value="{{department[0]}}">{{ department[1] }}</option>
(% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...