You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中使用bulk_create时如何动态跟踪已保存实例的进度?

在Django中使用bulk_create时跟踪保存进度的方法

Django的bulk_create方法本身没有内置的进度跟踪功能,但可以通过手动拆分批次并统计已保存实例数的方式实现动态跟踪。

实现步骤

  • 先确定待保存对象的总数量,再按设定的batch_size拆分出多个子批次
  • 逐个处理每个子批次,调用bulk_create完成保存后,累加已成功保存的实例数量,实时输出或记录进度

示例代码

from django.db import models

def bulk_create_with_progress(model: models.Model, objs, batch_size=1000):
    total_count = len(objs)
    saved_count = 0
    for idx in range(0, total_count, batch_size):
        batch_objs = objs[idx:idx+batch_size]
        # Django 2.2+ 版本中,bulk_create会返回成功创建的对象列表
        created_instances = model.objects.bulk_create(batch_objs, batch_size=batch_size)
        saved_count += len(created_instances)
        # 这里可根据需求替换为日志记录、前端状态更新等逻辑
        print(f"进度:已保存 {saved_count}/{total_count} 个实例 ({round(saved_count/total_count*100, 2)}%)")
    return saved_count

特殊场景处理

  • 如果启用了ignore_conflicts=True,部分冲突对象不会被保存,此时必须通过bulk_create的返回值统计真实保存数量,不能直接用批次长度累加
  • 若使用update_conflicts=True进行冲突更新,同样可以通过返回值获取实际被更新或创建的实例数量

内容的提问来源于stack exchange,提问作者Harsh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 12:47:13