Skip to main content

为模型提供初始数据

当您首次设置应用程序时,有时使用硬编码数据预填充数据库很有用。您可以提供夹具或迁移的初始数据。

用夹具提供初始数据

fixture是Django知道如何导入到数据库中的数据集合。如果你已经有了一些数据,创建一个夹具的最直接的方法是使用 manage.py dumpdata 命令。或者,你可以手工编写灯具; fixture可以写成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 目录中。

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

Django在哪里找到fixture文件

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

当运行 manage.py loaddata 时,您还可以指定夹具文件的路径,该文件覆盖搜索常用目录。

参见

测试框架 还使用夹具来帮助建立一致的测试环境。

使用迁移提供初始数据

如果要为应用程序自动加载初始数据,请不要使用fixture。而是使用 RunPythonRunSQL 操作为应用程序创建迁移。