2016-08-13 97 views
0

我的代码是更新环境参数值

class Leads(LoginRequiredMixin, ListView): 

def get_queryset(self): 
q = self.request.GET.get('q', "all") 
     if q == "customer": 
      qs = alllead.objects.filter(isCustomer="yes") 
     elif q == "lead": 
      qs = alllead.objects.filter(isCustomer="no") 
     else: 
      qs = self.queryset 
return qs 

def get_context_data(self, **kwargs): 
    context = super(Leads, self).get_context_data(**kwargs) 
    count = self.queryset.count() 
    context['count'] = count or "000" 
return context 

,所以我过滤我的查询集,也是我需要设置记录计数作为上下文参数“计数” ,但记录的数量不更新 ,所以我改变了我的代码

def get_queryset(self): 
q = self.request.GET.get('q', "all") 
     if q == "customer": 
      qs = alllead.objects.filter(isCustomer="yes") 
     elif q == "lead": 
      qs = alllead.objects.filter(isCustomer="no") 
     else: 
      qs = self.queryset 
return qs 

def get_context_data(self, **kwargs): 
    context = super(Leads, self).get_context_data(**kwargs) 
    q = self.request.GET.get('q', "none") 
    if q == "customer": 
     count = alllead.objects.filter(isCustomer="yes").count() 
    elif q == "lead": 
     count = alllead.objects.filter(isCustomer="no").count() 
    else: 
     count = self.queryset.count() 
    context['count'] = count or "000" 
return context 

我觉得我重复代码,这是不这样做的正确方法。 任何人都可以建议我更新

context['count'] = qs.count() 
#inside get_queryset() 

回答

0

的最佳方式一旦你称作超get_queryset(),那么QS被添加到上下文alllead_list;你可以从那里访问它。

def get_context_data(self, **kwargs): 
    context = super(Leads, self).get_context_data(**kwargs) 
    count = context['alllead_list'].count() 

但是,我认为你根本不需要在视图中这样做;您可以通过访问{{ allead_list.count|default:"000" }}轻松地在模板中执行此操作。

编辑由于查询集进行分页,您可以直接从分页程序获取计数:context['paginator'].count或模板{{ paginator.count }}

+0

非常感谢你,我改变了我的模板 '{{object_list.count | default:“0”}}' 但它只显示25?哪些是当前分页对象? –

+0

'count = context ['alllead_list']。count()'这个sollution也给出当前分页对象的数量25 –

+0

'{{paginator.count}}'适用于我。 它解决了我的问题只在一行 –