如何将slug作为request.data传递给Django REST框架的ModelViewSet

2024-06-26 00:08:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我在URL中输入了一个slug,我希望输入的slug在ModelViewSet中作为request.data

具体来说,

url.py

> router = routers.DefaultRouter()
> 
> router.register(r'courses', CollegeCourseViewSet,
> basename='college_course_list')
> 
> urlpatterns = [
>     path('api/v1/colleges/<slug:slug>/', include(router.urls)), ]

在这里,我希望college slug作为request.data在ModelViewSet中过滤该学院的课程

views.py

> class CollegeCourseViewSet(viewsets.ReadOnlyModelViewSet):
>     queryset = Course.objects.all()
>     lookup_field = 'slug'
>     filter_backends = (SearchFilter, DjangoFilterBackend)
>     search_fields = 'name'
> 
>     def list(self, request, *args, **kwargs):
>         try:
>             queryset = self.queryset
>             queryset = queryset.filter(courses_colleges__college__slug=request.data)
>             return Response(CourseSerializer(queryset, many=True).data, status=status.HTTP_200_OK)
>         except queryset is None:
>             raise Http404

但request.data在输出时为空

是否有任何特定的方法将request.data发送到ViewSet中的list函数

提前谢谢


Tags: pyselfdatarequeststatusfilterlistqueryset