我在REST API中使用了通用网址和普通网址,但现在我遇到了一个问题:我想要自定义操作,简单的 View 来对模型进行处理,例如“运行”,“发布”等。
ViewSet使action装饰器创建自定义 Action ,但仅在ViewSet中,才存在步进路由器,这使我们能够使用railsish over over配置简化一切。

但是我发现ModelViewSet具有与泛型相同的功能:完整的CRUD,序列化程序,过滤器,自定义前置/后置和查询集,因此,这引发了以下问题:

如果ModelViewSet提供相同的功能或更多功能,为什么还有泛型?有什么不同?

最佳答案

不同之处在于它们提供了哪些方法。

例如:

GenericViewSet 继承自GenericAPIView,但不提供基本操作的任何实现。只是get_object,get_queryset。

ModelViewSet 继承自GenericAPIView,并包括各种操作的实现。换句话说,您不需要执行基本操作,例如列出,检索,创建,更新或销毁。当然,您可以覆盖它们并实现自己的列表或自己的create方法。

您可以在“API引用”部分中了解有关此内容的更多信息:
ModelViewSet

10-06 03:13