在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。如何引用函数内部定义的值以在外部可用并使用它来过滤数据?
答案 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