我正在为django项目进行导航工作,无法解决这个问题。我从单个ListView
类返回上下文,但我想按类别排列返回的查询集。
如果我在同一个模型中有多个类别,我如何拆分返回的视图对象,以便在页面上单独显示它们?
我尝试在 views.py :
中使用它class ServiceView(ListView):
model = Service
template_name = "services/services.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['health'] = Service.objects.all().filter(service_type__icontains='health')
context['life'] = Service.objects.all().filter(service_type__icontains='life')
return context
我的印象是我可以从模板中调用修改后的上下文,但我只能调用一个上下文。是否可以从单个模型创建多个上下文?
我尝试使用类似以下 services.html :
的模板<ul class="sidebar-nav animated fadeIn">
<li>
<a data-toggle="collapse" href="#coll-css" class="collapsed"><i class="fa fa-heart"></i> Health</a>
<ul id="coll-css" class="menu-submenu list-unstyled collapse">
{% for service in health %}
<li><a href="{% url 'services' %}{{ service.slug }}"><i class="fa {{ service.icon }}"></i>{{ service.title }}</a></li>
{% endfor %}
</ul>
<a data-toggle="collapse" href="#coll-css" class="collapsed"><i class="fa fa-heart"></i> Life</a>
<ul id="coll-css" class="menu-submenu list-unstyled collapse">
{% for service in life %}
<li><a href="{% url 'services' %}{{ service.slug }}"><i class="fa {{ service.icon }}"></i>{{ service.title }}</a></li>
{% endfor %}
</ul>
</li>
</ul>
填充“健康”上下文中的项目,但不填充生活上下文。是否可以在模板中使用2 for循环?有没有更好的方法来实现这一目标?