我在ModelViewSet上添加了一个装饰方法。它不像我期望的那样工作。我可以浏览“/ customers / 1 / add”,但“/ customers / 1 / add / 1”返回404.为什么?
from rest_framework import routers, viewsets
from rest_framework.decorators import action
from app1.models import Customer
class CustomerViewSet(viewsets.ModelViewSet):
model = Customer
@action()
def add(self, request, pk=None):
queryset = Customer.objects.all()
router = routers.DefaultRouter()
router.register(r'customers', CustomerViewSet)
答案 0 :(得分:0)
当您使用@action
和@link
装饰器时,您可以为基本路由添加额外的网址as stated in the docs。
在文档的最后,它提到可以在resource/:id/method/
访问视图:
这两个新动作将在网址^ users / {pk} / set_password / $和^ users / {pk} / unset_password / $
中提供