Я новичок в кодировании и новичок в Django. Я искал stackoverflow для своего вопроса, но не нашел того, что искал:
Я пытаюсь проверить, есть ли определенные значения в моей базе данных, и, если да, передать их как переменную в шаблон . Значения будут элементами раскрывающегося меню. Если у меня есть, например, база данных с bike1 по bikeN, я бы хотел проверить, соответствует ли значение атрибута «handlebar» каждого объекта базы данных определенному производителю. Если да, передайте его в шаблон, чтобы он мог появиться в раскрывающемся меню для последующей фильтрации результатов.
Сначала я подумал, что должен проверить сам шаблон, и подумал примерно так:
bicyle_list. html
<ul id='dropdown1' class='dropdown-content'>
{% for bicyle in bicycles %}
{% with manufacturerA=False %}
{% if manufacturerA == False and bicycle.handlebar == "manufacturerA" %}
<li><a href="#!">ManufacturerA</a></li>
{% manufacturerA=True %}
{% endif %}
{% endwith %}
{% endfor %}
Но, как я понимаю, шаблон должен содержать только лог рендеринга c. (Кроме того, мне пришлось бы использовать логические переменные в for-l oop, потому что производитель должен появляться в раскрывающемся меню только один раз, даже если есть несколько велосипедов с этим конкретным рулем. Изменение значения переменных в шаблоне мне кажется довольно сложным.)
В views.py я думал об этом, но не знаю, как работать с условиями и методом рендеринга:
views.py
bicycles = Bicycle.objects.all()
for bicycle in bicyles:
if bicycle.handlebar == "manufacturerA":
manufacturerA= "manufacturerA"
if bicycle.handlebar == "manufacturerB":
manufacturerB= "manufacturerB"
#if variable manufacturerA exists, pass it to the template – if not, not! Same with manufacturerB
#But how to include in return render(..)?
return render(request, 'shop/bicycle_list.html', {'bicycles': bicycles})
У вас есть идеи, как передать необязательные переменные?