Django休息框架:query_route中的查询参数
发布时间:2020-12-16 23:36:12 所属栏目:Python 来源:网络整理
导读:我有以下ViewSet: class BookViewSet(DefaultsMixin,viewsets.ModelViewSet): queryset = Book.objects.all() serializer_class = BookSerializer @detail_route() def chapter(self,request,pk=None): queryset = Chapter.objects.filter(book__pk=pk) ser
我有以下ViewSet:
class BookViewSet(DefaultsMixin,viewsets.ModelViewSet): queryset = Book.objects.all() serializer_class = BookSerializer @detail_route() def chapter(self,request,pk=None): queryset = Chapter.objects.filter(book__pk=pk) serializer = ChpaterSerializer(queryset,context={'request':request},many=True) return Response(serializer.data) 所以url“/ book / {id} / chapter”有效. 解决方法
您可以在detail_route中添加url_path,如下所示:
@detail_route(url_name='chapter',url_path='chapter/(?P<chapter_id>[0-9]+)') def chapter(self,pk=None,chapter_id=None): queryset = Chapter.objects.filter(book__pk=pk) serializer = ChpaterSerializer(queryset,many=True) return Response(serializer.data) 请注意,默认路由器中的url的名称默认为url_path参数(如果提供).所以视图名称将包含查询参数字符串.通过指定url_name参数,您可以简化.我建议使用方法名称,如果没有指定url_path,那么这是默认值.有了这个,你可以用url来反转 reverse('book-chapter',kwargs={'pk': 1,'chapter_id': 4}) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |