为模型提供初始数据 — Django 文档

来自菜鸟教程
Django/docs/2.2.x/howto/initial-data
跳转至:导航、​搜索

为模型提供初始化的数据

当您第一次设置应用程序时,使用硬编码数据预先填充数据库有时很有用。 您可以通过迁移或固定装置提供初始数据。

通过迁移提供初始数据

如果要自动加载应用程序的初始数据,请创建 数据迁移 。 设置测试数据库时会运行迁移,因此数据将在那里可用,但受 一些限制


通过固定内容提供数据

您也可以使用夹具提供数据,但是,除非您使用 TransactionTestCase.fixtures,该数据不会自动加载。

夹具是 Django 知道如何导入数据库的数据集合。 如果您已经有了一些数据,那么创建夹具的最直接方法是使用 :djadmin:`manage.py 转储数据 ` 命令。 或者,您可以手动编写设备; 夹具可以写成 JSON、XML 或 YAML(安装了 PyYAML)文档。 序列化文档 有更多关于这些支持的 序列化格式 的详细信息。

不过,举个例子,下面是一个简单的 Person 模型的夹具在 JSON 中的样子:

[
  {
    "model": "myapp.person",
    "pk": 1,
    "fields": {
      "first_name": "John",
      "last_name": "Lennon"
    }
  },
  {
    "model": "myapp.person",
    "pk": 2,
    "fields": {
      "first_name": "Paul",
      "last_name": "McCartney"
    }
  }
]

这是与 YAML 相同的装置:

- model: myapp.person
  pk: 1
  fields:
    first_name: John
    last_name: Lennon
- model: myapp.person
  pk: 2
  fields:
    first_name: Paul
    last_name: McCartney

您将这些数据存储在应用程序内的 fixtures 目录中。

加载数据很简单:只需调用 :djadmin:`manage.py 加载数据 `<fixturename> , 在哪里<fixturename>是您创建的夹具文件的名称。 每次运行 :djadmin:`loaddata` 时,数据将从夹具中读取并重新加载到数据库中。 请注意,这意味着如果您更改由夹具创建的行之一,然后再次运行 :djadmin:`loaddata`,您将清除您所做的任何更改。

Django 从哪里寻找固定内容文件

默认情况下,Django 在每个应用程序内的 fixtures 目录中查找装置。 您可以将 :setting:`FIXTURE_DIRS` 设置设置为 Django 应该查看的其他目录列表。

跑步时 :djadmin:`manage.py 加载数据 ` ,您还可以指定一个固定文件的路径,它会覆盖搜索通常的目录。

也可以看看

测试框架 也使用夹具来帮助设置一致的测试环境。