我想从单个 View 运行多个查询集。
我已经完成了将单个 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]从相同的索引 View 中,并将此querset中的 context_object_name 传递给相同的 template_name

我在模板中得到的值为{% for hotel in all_hotels %}

最佳答案

覆盖 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 }}

关于python - Django如何从单个 View 到单个模板为多个查询集获取多个context_object_name,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43387875/

10-16 03:54