Django如何从单个视图到单个模板获取多个查询集的多个context_object_name

时间:2017-04-13 09:02:52

标签: python django

我想从单个视图运行多个查询集。 我已经完成了单个 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 %}的值

1 个答案:

答案 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 }}