我不确定 Headers 中的措辞是否合适,所以请在下面查看我对我的疑问的描述 .

在“def get_queryset(self)”中,我过滤了结果,然后将此过滤结果传递给queryset .

然后在“def get_context_data(self,** kwargs):”我想使用“get_queryset”的Filtered结果进行计算 . 但事情是我得到的最终结果不适用于过滤器 .

所以我怀疑get_context_data中的“get_queryset”没有从“def get_queryset”获取值 .

请提前帮助纠正我 .

views.py

class InputFormView(FormView):
    template_name = 'inputform.html'
    form_class = InputForm

    def get_success_url(self):
        return ''.join(
        [
            reverse('result'),
            '?company=',self.request.POST.get('company'),  <--do I need to change "POST" into "USER"?
            '&region=',self.request.POST.get('region')
        ]
        )

class ResultView(ListView):
    context_object_name = 'result_list'
    template_name = 'result_list.html'
    model = Result

    def get_context_data(self, **kwargs):
        context = super(ResultView, self).get_context_data(**kwargs)
        context["sales"] = self.get_queryset().aggregate(Sum('sales'))

        return context

    def get_queryset(self):
        if self.request.method == 'POST': 
            form = InputForm(self.request.POST)
            if form.is_valid():
                region = form.cleaned_data['region']

                queryset=Result.objects.filter(region=region)
                return queryset   《--if this queryset result go to the "get_queryset()" of "def get_context_data"--》?
        return Result.objects.all()

test views.py based on Danniel's suggestion

class InputFormView(FormView):
    template_name = 'inputform.html'
    form_class = InputForm

    def get_success_url(self):
        return ''.join(
        [
            reverse('result'),
            '?company=',self.request.POST.get('company'),  <--do I need to change "POST" into "USER"?
            '&region=',self.request.POST.get('region')
        ]
        )

class ResultView(ListView):
    context_object_name = 'result_list'
    template_name = 'result_list.html'
    model = Result

    def get_context_data(self, **kwargs):
        context = super(ResultView, self).get_context_data(**kwargs)
        context["sales"] = self.get_queryset().aggregate(Sum('sales'))

        return context

    def get_queryset(self):
        return Result.objects.filter(region='EU')   <--- there exists already "EU" in the database--->

traceback on the test views.py

File "C:\Python27\lib\site-packages\django-1.8.3-py2.7.egg\django\core\handlers\base.py" in get_response
164.                 response = response.render()
File "C:\Python27\lib\site-packages\django-1.8.3-py2.7.egg\django\template\response.py" in render
158.             self.content = self.rendered_content
File "C:\Python27\lib\site-packages\django-1.8.3-py2.7.egg\django\template\response.py" in rendered_content
135.         content = template.render(context, self._request)
File "C:\Python27\lib\site-packages\django-1.8.3-py2.7.egg\django\template\backends\django.py" in render
72.             context = make_context(context, request)
File "C:\Python27\lib\site-packages\django-1.8.3-py2.7.egg\django\template\context.py" in make_context
272.             context.push(original_context)
File "C:\Python27\lib\site-packages\django-1.8.3-py2.7.egg\django\template\context.py" in push
55.         return ContextDict(self, *args, **kwargs)
File "C:\Python27\lib\site-packages\django-1.8.3-py2.7.egg\django\template\context.py" in __init__
20.         super(ContextDict, self).__init__(*args, **kwargs)

Exception Type: TypeError at /dupont_list/
Exception Value: cannot convert dictionary update sequence element #0 to a sequence

result models.py

class Result(models.Model):
    company=models.CharField(max_length=10,blank=True)
    region=models.CharField(max_length=10,blank=True)
    sales=models.DecimalField(max_digits=12,decimal_places=3,blank=True,null=True)