2017-07-30 71 views
2

在Django中,我想根据用户从前端下拉列表中进行的选择来过滤数据。如何使函数内的返回值在函数外部可用?我使用的是Django Rest Framework,但我认为在任何情况下Django都是如此。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的是给我,airline_id没有在查询集定义的错误。如何引用在函数内定义的值以便在外部可用并使用它来过滤数据?

回答

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 
+0

感谢丹尼尔,但我认为这将是一个错误,'请求'未定义。 – Hannan

+0

对不起,应该是'self.request'。 –

相关问题