如何将值从 get_queryset() 传递到 get_context_data()

Jay*_*Jay 2 django django-queryset

由于get_queryset()仅返回一个查询集,我需要将查询集的长度添加search_store到模板文件中。因此,我尝试通过 将该值发送到模板get_context_data

我知道我可以通过 获取查询集的长度{{ queryset|length }},但由于某种原因,它只返回由分页分隔的查询集的长度,所以我只得到部分长度。

正如您所看到的代码,我正在尝试打印,并且我需要从search_stores.count()中获取它。谁能让我知道我该怎么做?get_context_dataget_queryset

class SearchListView(ListView):
    model = Store
    template_name = 'boutique/search.html'
    paginate_by = 2
    context_object_name = 'search_stores'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['search_text'] = self.request.GET.get('search_text')
        context['sorter'] = self.request.GET.get('sorter')
        if not context['sorter']:
            context['sorter'] = 'popularity'
        return context

    def get_queryset(self):

        search_text = self.request.GET.get('search_text')
        sorter = self.request.GET.get('sorter')

        if not sorter:
            sorter = 'popularity'

        if search_text:
            search_stores = Store.objects.filter(Q(businessName__icontains=search_text) | Q(mKey__icontains=search_text))
            if sorter == 'businessName':
                search_stores = search_stores.order_by(sorter)
            else:
                search_stores = search_stores.order_by(sorter).reverse()
        else:
            search_stores = ''

        for store in search_stores:
            store.mKey = store.mKey.split(' ')

        print(search_stores.count())
        return search_stores
Run Code Online (Sandbox Code Playgroud)

ape*_*pet 6

如果问题是“如何将值从 get_queryset() 传递到 get_context_data()”,则get_queryset()返回object_list,您可以通过以下方式访问它:

    def get_context_data(self):
        .....
        something = self.object_list
        .....
Run Code Online (Sandbox Code Playgroud)