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

如何将CSV文件最简单地导入Django模型表?

嘿,这个需求我熟得很!处理几千条问题数据导入Django的Question表,最简的方法分两种,看你偏好可视化操作还是纯脚本:

方案一:用django-import-export(零代码可视化,懒人首选)

这是我最推荐的快速导入方式,装个库就能在Django后台直接操作,不用写复杂代码:

  1. 先装依赖:
pip install django-import-export
  1. 打开项目的settings.py,在INSTALLED_APPS里加一行:
INSTALLED_APPS = [
    # 其他已有的app...
    'import_export',
]
  1. 编辑你的app下的admin.py,给Question模型加上导入导出功能:
from django.contrib import admin
from import_export.admin import ImportExportModelAdmin
from .models import Question

@admin.register(Question)
class QuestionAdmin(ImportExportModelAdmin):
    pass
  1. 重启Django服务,登录后台找到Question表,你会看到多了个「导入」按钮!上传你的CSV文件,跟着向导匹配字段、预览数据,确认没问题就能一键导入,几千条数据分分钟搞定,还能自动处理基本的格式校验。
方案二:手写极简脚本(无额外依赖,灵活可控)

如果你不想加第三方库,写个十几行的脚本就能搞定,放在项目根目录(和manage.py同文件夹):

import csv
import os
import django

# 初始化Django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '你的项目名.settings')
django.setup()

# 替换成你的app和模型路径
from your_app_name.models import Question

# 读取CSV文件,注意编码要和你的CSV匹配(比如Excel导出的可能是gbk)
with open('questions.csv', 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    # 批量收集数据,比逐条保存高效N倍
    question_list = []
    for row in reader:
        # 这里要保证CSV的字段名和Model字段对应,比如CSV的"title"对应Question.title
        # 有特殊字段(比如日期、外键)的话,在这里做格式转换
        question = Question(
            title=row['title'],
            content=row['content'],
            # 其他字段按你的Model定义补充
        )
        question_list.append(question)
    # 批量插入数据库
    Question.objects.bulk_create(question_list)

运行脚本的命令:

python import_questions.py
一些必看的小提示
  • 导入前一定要备份数据库,或者先在测试环境跑一遍,避免数据混乱
  • 如果CSV里有重复数据,要么先在CSV里手动去重,要么在脚本里加判断(比如用get_or_create,但批量插入就没法用了,得逐条处理)
  • 编码坑:Excel导出的CSV经常是gbk或者utf-8-sig编码,打开文件时要对应设置encoding='gbk'或者encoding='utf-8-sig'
  • 外键字段:如果Question有外键,CSV里要存外键对应的主键值,或者在脚本里根据名称查询关联对象再赋值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:33:27