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

如何通过代码调用django-seed生成伪造数据库测试数据

代码运行方法

你找到的示例代码不能直接裸跑,必须在Django运行环境上下文里执行,下面是三种可直接落地的运行方式。先提前修正示例的小问题:原示例缺少import random的导入语句,且模型导入路径要替换成你自己项目的实际路径(比如你之前用的是api app,就把myapp替换成api,模型名换成你自己定义的模型类)。

方法1:自定义Django管理命令(最推荐)

这种方式和你之前用的python3 manage.py seed命令体验完全一致,不会出现环境配置错误,适合把种子逻辑固化到项目里:

  • 在你的目标app目录下(比如api目录),依次新建层级目录management/commands,在两个目录下都创建空的__init__.py文件标识Python包
  • 在commands目录下新建自定义命令文件,比如命名为seed_custom.py,写入如下代码:
import random
from django.core.management.base import BaseCommand
from django_seed import Seed
# 替换成你自己的模型导入路径
from api.models import Game, Player

class Command(BaseCommand):
    help = "自定义批量生成测试数据"

    def handle(self, *args, **kwargs):
        seeder = Seed.seeder()
        seeder.add_entity(Game, 5)
        seeder.add_entity(Player, 10, {
            'score':    lambda x: random.randint(0, 1000),
            'nickname': lambda x: seeder.faker.email(),
        })
        inserted_pks = seeder.execute()
        self.stdout.write(self.style.SUCCESS(f"数据生成完成,共插入记录主键:{inserted_pks}"))
  • 回到项目根目录(manage.py所在层级),直接执行命令即可运行:python3 manage.py seed_custom

方法2:独立脚本运行

如果你不想写管理命令,想单独跑一个脚本生成数据,需要在脚本最开头手动初始化Django环境:

  • 在项目根目录新建脚本文件比如run_seed.py,写入如下内容:
import os
import random
# 配置Django环境变量,把your_project替换成你自己的项目根目录名
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_project.settings")
import django
django.setup()

# Django初始化完成后再导入seeder和模型
from django_seed import Seed
from api.models import Game, Player

if __name__ == "__main__":
    seeder = Seed.seeder()
    seeder.add_entity(Game, 5)
    seeder.add_entity(Player, 10, {
        'score':    lambda x: random.randint(0, 1000),
        'nickname': lambda x: seeder.faker.email(),
    })
    inserted_pks = seeder.execute()
    print(f"数据插入完成,插入记录主键:{inserted_pks}")
  • 直接在项目根目录执行脚本即可:python3 run_seed.py

方法3:Django Shell临时运行

如果只是临时生成一次测试数据,不需要留存代码,可以直接在Django交互Shell里执行:

  • 项目根目录执行python3 manage.py shell进入交互环境
  • 逐行输入以下代码执行即可:
import random
from django_seed import Seed
from api.models import Game, Player
seeder = Seed.seeder()
seeder.add_entity(Game, 5)
seeder.add_entity(Player, 10, {
    'score':    lambda x: random.randint(0, 1000),
    'nickname': lambda x: seeder.faker.email(),
})
inserted_pks = seeder.execute()
print(inserted_pks)

小提示:如果模型之间存在外键、多对多关联关系,django-seed会自动处理关联数据的生成,你只需要保证被关联的模型也加入了seeder的实体列表即可,不需要手动指定关联字段的生成规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:57:24