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

如何通过脚本向Django数据库添加测试数据(无需Django Admin)

Django 自动添加测试数据脚本实现方案

有两种常用方案可以实现自动添加预设测试数据,无需通过Admin界面操作:

方案一:自定义Django管理命令(推荐)

这种方式符合Django的最佳实践,可直接通过manage.py运行,适合长期复用。

步骤1:创建命令目录结构

在你的目标Django应用下,创建如下目录和文件(确保每个目录都有__init__.py,让Django识别为可导入模块):

your_app/
├── management/
│   ├── __init__.py
│   └── commands/
│       ├── __init__.py
│       └── add_test_data.py

步骤2:编写命令代码

在add_test_data.py中写入以下代码,替换为你的模型和测试数据:

from django.core.management.base import BaseCommand
from your_app.models import Book  # 替换为你的模型

class Command(BaseCommand):
    help = '向数据库添加预设测试数据'

    def handle(self, *args, **options):
        # 定义预设测试数据,字段需与模型一致
        test_data = [
            {
                'title': 'Django实战指南',
                'author': '张三',
                'publish_date': '2023-01-01'
            },
            {
                'title': 'Python进阶教程',
                'author': '李四',
                'publish_date': '2022-05-15'
            }
        ]

        for item in test_data:
            # 使用get_or_create避免重复添加,用模型的唯一字段作为查询条件
            obj, created = Book.objects.get_or_create(
                title=item['title'],  # 替换为你的模型唯一标识字段
                defaults=item
            )
            if created:
                self.stdout.write(self.style.SUCCESS(f"成功添加: {obj.title}"))
            else:
                self.stdout.write(self.style.WARNING(f"数据已存在,跳过: {obj.title}"))

运行命令

在项目根目录执行:

python manage.py add_test_data

方案二:独立脚本(临时场景)

如果只是临时运行,可编写独立脚本,无需创建管理命令,但需要先配置Django环境。

编写脚本

在项目根目录(与manage.py同目录)创建add_test_data.py:

import os
import django

# 配置Django环境,替换为你的项目settings模块
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings')
django.setup()

from your_app.models import Book  # 替换为你的模型

# 预设测试数据
test_data = [
    {
        'title': 'Django实战指南',
        'author': '张三',
        'publish_date': '2023-01-01'
    },
    {
        'title': 'Python进阶教程',
        'author': '李四',
        'publish_date': '2022-05-15'
    }
]

for item in test_data:
    obj, created = Book.objects.get_or_create(
        title=item['title'],
        defaults=item
    )
    print(f"{'添加成功' if created else '已存在,跳过'}: {obj.title}")

运行脚本

直接执行:

python add_test_data.py

注意事项

  • 替换代码中的your_app、your_project为实际的应用名和项目名
  • 确保测试数据包含模型的所有必填字段,外键字段需先创建关联对象再引用
  • 若需要清空现有数据后重新添加,可在创建数据前执行Model.objects.all().delete()(谨慎操作,避免误删生产数据)
  • 使用get_or_create可避免重复执行脚本时生成重复数据,若需要强制覆盖,可删除该逻辑直接创建实例

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:21:27