Django Rest Framework: @Action Route с тем же url_path, что и Viewset - PullRequest
1 голос
/ 10 апреля 2020

Я хочу POST к DRF Viewset Detail Route. Это возможно? Я знаю, что с помощью DRF вы можете переопределить поле «Создать», но это не позволит вам получить доступ к подробному маршруту.

Конкретно в этом примере я хочу, чтобы дизайн маршрута был POST /foo/<pk>/, а не какой-то маршрут вроде POST /foo/<pk>/bar/.

Вот что я хочу сделать sh, обратите внимание на 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

urls.py

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

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

...