Проблема возврата данных context_processor в html для циклов
Я пытаюсь добавить поле категорий в навигацию. Пока что я сделал context_processor, который запрашивает все марки автомобилей. В моей навигации я зацикливаю все марки, и это работает. Я также хочу добавить выпадающие списки, которые содержат определенные модели автомобилей для определенных марок автомобилей. Я думаю, что проблема заключается в возврате правильных данных, которые можно зациклить в моем _base.html.
_base.html
<div class="flex pt-3 container w-full">
{% for item in car_brands %}
<button id="dropdown-button" data-dropdown-toggle="dropdown-{{item.id}}" class="py-2.5 px-4 text-sm font-medium text-center text-gray-900 bg-gray-100 uppercase" type="button">{{item}}</button>
<div id="dropdown-{{item.id}}" class="hidden shadow w-44 bg-gray-100">
<ul aria-labelledby="dropdown-button">
{% for model in models %}
<li>
<a href="#" class="inline-flex w-full px-4 py-2 hover:bg-gray-50">{{ model }}</a>
</li>
{% endfor %}
</ul>
</div>
{% endfor %}
context_processors.py
from .models import CarBrandCategory, CarModel
def brand_catalogue(request):
car_brands = CarBrandCategory.objects.all()
for brand in car_brands:
models = [model for model in CarModel.objects.filter(brand_id=brand.id)]
print(models)
return {
'car_brands': car_brands,
'models': models
}
При печати он выдает мне разные списки, состоящие из разных моделей, например, [
Мне интересно, есть ли у кого-нибудь опыт работы с подобными решениями и какой способ создания такого решения может быть наиболее оптимальным?
Спасибо
Я создал список различных моделей автомобилей, но не могу вернуть его в html. Я хочу, чтобы каждая марка автомобиля в моем навигационном меню имела выпадающий список, состоящий из определенных моделей автомобилей.
Вы слишком усложняете ситуацию, вы можете работать с:
from .models import CarBrandCategory
def brand_catalogue(request):
return {'car_brands': CarBrandCategory.objects.prefetch_related('model')}
Затем в шаблоне вы используете:
<ul>
{% for brand in car_brands %}
<li>{{ brand.brand_name }}
{% for model in brand.model.all %}
<li>{{ model.model }}</li>
{% endfor %}
</li>
{% endfor %}
</ul>