Django - 如何使变量内部函数在外部可用于数据过滤器

时间:2017-07-30 18:08:09

标签: python django django-rest-framework

在Django中,我想根据用户从前端下拉列表中做出的选择来过滤数据。如何使函数内的返回值在函数外部可用?我正在使用Django Rest Framework,但我认为Django在任何情况下都是如此。

这是我的views.py

class ListAirlineYearFinancialData(generics.ListAPIView): # Serialized data
    serializer_class = FinancialDataSerializer

    def airline_dashboard(request):
        airline_list = Airline.objects.all() 
        year_list = Year.objects.all()

        if request.method == 'GET':
            identifier = request.GET.get('id', None)
            if identifier:
                airline_id = Airline.objects.filter(pk=identifier)
                return airline_id # How to reference this return value outside function to queryset below?
        return render(request, 'dashboard/company_page.html', {'airline_list': airline_list, 'year_list': year_list})

    queryset = FinancialData.objects.filter(airline_id=airline_id) # I get error airline_id is not defined
    queryset_filtered = queryset.filter(financial_year_id=1)

    def get_queryset(self, *args, **kwargs):
        return self.queryset_filtered

Django给我一个错误,即在queryset中没有定义airline_id。如何引用函数内部定义的值以在外部可用并使用它来过滤数据?

1 个答案:

答案 0 :(得分:2)

您只需将这两行移动到方法中即可。

def get_queryset(self, *args, **kwargs):
    queryset = FinancialData.objects.filter(airline_id=self.request.GET.get('id'))
    queryset_filtered = queryset.filter(financial_year_id=1)
    return queryset_filtered