Implementing filters using dictionary packaging - Error: filter_queryset() missing 3 required positional arguments

Implementing filters using dictionary packaging - Error: filter_queryset() missing 3 required positional arguments

我正在尝试使用字典打包优化我的过滤器代码,但是我收到以下错误:

filter_queryset() missing 3 required positional arguments: 'industry', 'instructor', and 'mediaType'

views.py

class CourseList(generics.ListCreateAPIView):
    serializer_class = CourseSerializer

    def get_queryset(self):
        queryset = Course.objects.all()
        if(self.request.query_params):
            queryParams = self.request.query_params
            filterParams= queryParams.dict()
            queryset = self.filter_queryset(queryset, **filterParams)
            # if(queryParams.get('industry', None)):
            #     queryset = queryset.filter(industry=queryParams.get('industry', None))
            # if(queryParams.get('instructor', None)):
            #                 queryset = queryset.filter(instructor=queryParams.get('instructor', None))
            # if(queryParams.get('mediaType', None)):
            #                 queryset = queryset.filter(course_media__media_type=queryParams.get('mediaType', None))
        return queryset

    def filter_queryset(self, queryset, industry, instructor, mediaType):
        queryset.filter(industry=industry).filter(instructor=instructor).filter(course_media__media_type=mediaType)
        return queryset

url: http://127.0.0.1:8000/authenticator/course/?industry=IT&instructor=5&mediaType=mp4

调试器:

> c:\......\views.py(200)filter_queryset()

-> queryset.filter(industry=industry).filter(instructor=instructor).filter(course_media__media_type=mediaType)
(Pdb) queryset
<QuerySet [<Course: Course: lkjhh>, <Course: Course: lkjkj>]>

(Pdb) industry
'IT'

(Pdb) instructor
'5'

(Pdb) mediaType
'mp4'

(Pdb) self
<authenticator.views.CourseList object at 0x0466C890>

(Pdb) n
> c:\users\cherry\envs\projects\indiaclap\authenticator\views.py(201)filter_queryset()
-> return queryset

(Pdb) n
--Return--
> c:\users\cherry\envs\projects\indiaclap\authenticator\views.py(201)filter_queryset()-><QuerySet [<C...urse: lkjkj>]>
-> return queryset

(Pdb) queryset
<QuerySet [<Course: Course: lkjhh>, <Course: Course: lkjkj>]>

(Pdb) c

我在这里遗漏了什么,因为当我调试 filter_queryset 方法时,我可以看到所有三个过滤器值都被正确填充。

问题是因为我使用了名称 filter_queryset,这是 django 中的预定义功能,因此错误地覆盖了它。更改函数的名称清除了报告的错误,尽管我 运行 稍后会变成其他一些错误