我想从单个视图运行多个查询集。 我已经完成了单个 get_queryset 和单个 context_object_name 以传递到 index.html 模板:
class IndexView(generic.ListView):
template_name = 'doorstep/index.html'
context_object_name = 'all_hotels'
def get_queryset(self):
return Hotel.objects.all().order_by('rating').reverse()[:3]
现在,我需要运行此查询集
Hotel.objects.all().order_by('star').reverse()[:3]
从同一 IndexView 并将 context_object_name 从此querset传递到相同的 template_name 。
我在模板中获得{% for hotel in all_hotels %}
的值
答案 0 :(得分:4)
覆盖get_context_data
并将任何其他查询集添加到上下文中。
class IndexView(generic.ListView):
template_name = 'doorstep/index.html'
context_object_name = 'all_hotels'
def get_queryset(self):
return Hotel.objects.all().order_by('rating').reverse()[:3]
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
context['star_hotels'] = Hotel.objects.all().order_by('star').reverse()[:3]
# Add any other variables to the context here
...
return context
您现在可以在模板中访问{{ star_hotels }}
。