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

时间:2014-02-09 05:23:57

标签: django django-rest-framework swagger-ui

如何使用Serializer从api中删除[POST] /api/contact/{pk}/? (摆脱第二个API) 我的序列化程序定义如下:

class ContactSerializer(serializers.ModelSerializer):

    class Meta:
        model = Contact
        fields = ('chatuser', 'contact', 'is_blocked')

我的ViewSet如下:

class ContactViewSet(mixins.CreateModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
    queryset = Contact.objects.all()
    serializer_class = ContactSerializer

Django REST Swagger UI

1 个答案:

答案 0 :(得分:4)

你可以使用ReadOnlyModelViewset吗?来自文档:

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

  

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

虽然因为GenericViewSet不应该为你提供开箱即用的任何操作,但它应该只能使用ModelViewSet进行POST,这有点奇怪。

  

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

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

  

为了使用GenericViewSet类,您将覆盖该类并混合所需的mixin类,或明确定义动作实现。

如果你可以检查那些mixins的定义或在这里发布它们,或者只是尝试使用ReadOnlyModelViewSet而不使用任何mixins,看看你是如何进行的。