python - 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)),
]
解决方案
推荐阅读
- angularjs - AngularJS - 使用函数作为控制器内的过滤器
- r - 检查点在 R-markdown 中找不到 multidplyr
- r - 使用 tidyverse 对大型时间序列数据集有条件地聚合列
- python - 从带有条件的熊猫数据框中删除行
- django - 使用 ManytoManyField 的 Django 查询
- anylogic - 如何通过数据库一次创建所有代理?
- android - MVVM。在 ViewModel 中设置数据
- sas - 从多个 Excel 创建单个报告
- database - 微服务横向扩展/横向扩展数据库的最佳实践或设计
- hadoop-yarn - Apache flink - 在hadoop / yarn集群上提交作业后超时