2

如何[POST] /api/contact/{pk}/使用 Serializer 摆脱 api?(去掉第二个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

4

1 回答 1

5

您可以使用 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 的定义或在此处发布它们,或者只是尝试使用 ReadOnlyModelViewSet 而不使用任何 mixin,然后看看您是如何进行的。

于 2014-02-11T11:39:13.103 回答