Django Rest:如何使用 {pk} 禁用 POST api

She*_*ong 2 django django-rest-framework swagger-ui

如何使用 Serializer 摆脱[POST] /api/contact/{pk}/api 的影响?(去掉第二个API)我的序列化器定义如下:

class ContactSerializer(serializers.ModelSerializer):

    class Meta:
        model = Contact
        fields = ('chatuser', 'contact', 'is_blocked')
Run Code Online (Sandbox Code Playgroud)

我的ViewSet如下:

class ContactViewSet(mixins.CreateModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
    queryset = Contact.objects.all()
    serializer_class = ContactSerializer
Run Code Online (Sandbox Code Playgroud)

Django REST Swagger 用户界面

Hai*_*ris 5

您也许可以使用 ReadOnlyModelViewset 吗?来自文档:

http://www.django-rest-framework.org/api-guide/viewsets#readonlymodelviewset

ReadOnlyModelViewSet 类也继承自 GenericAPIView。与 ModelViewSet 一样,它也包含各种操作的实现,但与 ModelViewSet 不同的是,ModelViewSet 仅提供“只读”操作、.list() 和 .retrieve()。

但这有点奇怪,因为 GenericViewSet 不应该为您提供任何开箱即用的操作,您应该只使用 ModelViewSet 获取 POST。

GenericViewSet 类继承自 GenericAPIView,并提供默认的 get_object、get_queryset 方法集和其他通用视图基本行为,但默认情况下不包含任何操作。

这可能意味着这些 mixin 之一正在为您提供额外的操作,请参阅:

为了使用 GenericViewSet 类,您将重写该类并混合所需的 mixin 类,或者显式定义操作实现。

如果您可以检查这些 mixins 的定义或将它们发布到此处,或者尝试使用 ReadOnlyModelViewSet 而不使用任何 mixins,然后看看如何进行。