首页 > 解决方案 > 具有多个查询参数的动态查询集过滤

问题描述

我已经实现了以下视图,以根据提供的特定查询过滤事务。有没有一种方法可以根据提供的查询动态过滤,例如,一个人只想查询yearmonth甚至只使用一个查询进行过滤。其余查询值最终将具有None不应包含在过滤器中的值。

class ReportTransactionsFilterAPIView(APIView):
    def get(self, request, format=None):

        year = self.request.GET.get('year')
        month = self.request.GET.get('month')
        subcounty = self.request.GET.get('subcounty')
        ward = self.request.GET.get('ward')

        fromDate = self.request.GET.get('fromDate')
        toDate = self.request.GET.get('toDate')   

        qs = LiquorReceiptTrack.objects.all()
        qs = LiquorReceiptTrack.objects.filter(
            Q(date_recieved__range=[fromDate,toDate])|
            Q(date_recieved__year=year)|
            Q(date_recieved__month=month)|
            Q(sub_county__iexact=subcounty)|
            Q(ward__iexact=ward)

        )

标签: djangodjango-rest-framework

解决方案


您可以将django-filter用于您的解决方案。另外有关更多信息,您可以访问https://www.django-rest-framework.org/api-guide/filtering/


推荐阅读