首页 > 解决方案 > Django Rest Framework:@Action Route 与 Viewset 具有相同的 url_path

问题描述

我想发布到 DRF Viewset Detail Route。这可能吗?我知道使用 DRF 您可以覆盖 Create 字段,但这不允许您访问详细路线。

特别是在这个例子中,我希望路线的设计是POST /foo/<pk>/,而不是一些类似的路线POST /foo/<pk>/bar/

这是我想要完成的,请注意IS_THERE_A_WAY_TO_DO_THIS

class FooViewSet(
    mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet
):
    """
    Foo-related viewsets.
    """

    permission_classes = [IsAuthenticated]
    queryset = models.Foo.objects.all()
    serializer_class = serializers.FooSerializer

    @action(
        methods=["post"],
        detail=True,
        permission_classes=[IsAuthenticated],
        url_path="", <-- IS_THERE_A_WAY_TO_DO_THIS? Normally this wont work.
        url_name="foobar",
    )
    def foobar_process(self, request, pk=None):
        pass

网址.py

router = DefaultRouter()
...
router.register(r"foo", FooViewSet, basename="foo")
...

urlpatterns += [
    re_path(r"^", include(router.urls)),
]

标签: pythondjangodjango-rest-framework

解决方案


推荐阅读