库
djangorestframework-bulk==0.2.1
类
from rest_framework_bulk import BulkModelViewSet
使用方法
class CustomViewSet(BulkModelViewSet):pass
BulkModelViewSet继承了bulk_mixins.BulkCreateModelMixin,bulk_mixins.BulkUpdateModelMixin,bulk_mixins.BulkDestroyModelMixin, 以下会挨个分析
BulkCreateModelMixin:- 重写了
create方法.判断request.data是否为数组,如果是,则修改bulk标记为true. - 提供了
perform_bulk_create方法作为自定义批量创建方法的hook,默认状态与非bulk时相同. - 调用链:
BulkCreateModelMixin.perform_bulk_create→CreateModelMixin.perform_create(serializer)→serializer.save()→ListSerializer.save()→ListSerializer.create()→循环数据并调用self.child.create(attrs)
- 重写了
BulkUpdateModelMixin- 直接添加了bulk_update方法.将put方法重定向到bulk_update方法.注意是/app/model/的put方法.之前如果调用是method_not_allow.现在有处理方法了.
- 调用链与上面相同.注意调用了序列化器的update方法.所以
ListSerializer必须是BulkListSerializer或者其子类.
BulkDestroyModelMixin- 添加了destory方法.很简单
