让我说我有以下观点:
class UserViewSet(viewsets.ReadOnlyModelViewSet, viewsets.GenericViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
router.register(r'users', UserViewSet)
我可以通过点击我的API的/ users / endpoint来获取所有用户。
我还希望能够使用/ companies / {company_id} / users
列出公司用户我想创建一个新端点,它将重用我的list
方法,但以不同方式过滤查询集。
我的想法是注册这条路线来调用另一种方法,比方说list_by_company
,它的kwargs中会有company_id
。
如何在DRF路由器类中注册?
我也欢迎其他有关如何实现此过滤的想法,但我不想使用查询参数,因为从长远来看它会有点混乱。
答案 0 :(得分:0)
我发现我可以扩展DefaultRouter并添加一个完全符合我想要的条目:
B
然而,由于我也在重写默认路由,所以这有点冗长。
然后,我可以直接将路由器添加到DRF路由器,这更短:
C
我将使用此解决方案,但我很想知道其他开发人员是否以不同的方式解决此类案例:)