Skip to main content
 首页 » 编程设计

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

2024年10月01日37lautakyan007

在 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 给我一个错误,查询集中没有定义 airline_id。如何引用函数内部定义的值以供外部使用并使用它来过滤数据?

请您参考如下方法:

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

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