djangorestframework-bulk==0.2.1

from rest_framework_bulk import BulkModelViewSet

使用方法

  1. class CustomViewSet(BulkModelViewSet):
  2. 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_createCreateModelMixin.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方法.很简单