我在REST API中使用了通用网址和普通网址,但现在我遇到了一个问题:我想要自定义操作,简单的 View 来对模型进行处理,例如“运行”,“发布”等。ViewSet
使action
装饰器创建自定义 Action ,但仅在ViewSet中,才存在步进路由器,这使我们能够使用railsish over over配置简化一切。
但是我发现ModelViewSet
具有与泛型相同的功能:完整的CRUD,序列化程序,过滤器,自定义前置/后置和查询集,因此,这引发了以下问题:
如果ModelViewSet
提供相同的功能或更多功能,为什么还有泛型?有什么不同?
最佳答案
不同之处在于它们提供了哪些方法。
例如:
GenericViewSet 继承自GenericAPIView,但不提供基本操作的任何实现。只是get_object,get_queryset。
ModelViewSet 继承自GenericAPIView,并包括各种操作的实现。换句话说,您不需要执行基本操作,例如列出,检索,创建,更新或销毁。当然,您可以覆盖它们并实现自己的列表或自己的create方法。
您可以在“API引用”部分中了解有关此内容的更多信息:
ModelViewSet