【发布时间】:2018-10-18 20:29:29
【问题描述】:
由于get_queryset() 只返回一个查询集,我需要查询集search_store 到模板文件的长度。所以,我试图通过get_context_data 将值发送到模板。
我知道我可以通过{{ queryset|length }} 得到一个查询集的长度,但是由于某种原因,它只返回一个由分页分隔的查询集的长度,所以我只得到一个部分长度。
正如您看到的代码,我正在尝试打印search_stores.count(),我需要从get_queryset 获取get_context_data。谁能让我知道我该怎么做?
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
【问题讨论】: