As get_queryset()
returns only one queryset and I need the length of the queryset search_store
to the template file. So, I'm trying to send the value to the template through get_context_data
.
I know I can get a length of a queryset through {{ queryset|length }}
, but for some reason, it only returns a length of queryset separated by pagination, so I only get a partial length.
As you see the code, I'm trying to print search_stores.count()
, and I need get it in get_context_data
from get_queryset
. Can anyone let me know how I can do that?
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