# Django 2.2.9.dev20191202104323 文档

# 为模型提供初始化的数据

第一次配置应用时，用硬编码的数据预备数据库有时很很有用。你能通过迁移和固定内容提供初始数据。

## 通过迁移提供初始数据

若你想为应用自动载入初始数据，创建一个 数据迁移。创建测试数据库时会运行迁移，所以可以用这里的数据， 一些限制 主题。

## 通过固定内容提供数据

你也能通过固定内容提供数据，不过，这些数据不会自动加载，除非你使用 `TransactionTestCase.fixtures`。

固定内容是一个 Django 知道如何导入数据库的集合。若你已有一些可用数据，最直接的创建固定内容的方式是使用 `manage.py dumpdata` 命令。或者，你可以手写固定内容；固定数据能被写作 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 从哪里寻找固定内容文件

默认情况下，Django 在每个应用的 `fixtures` 目录中查找固定内容。你可以将配置项 `FIXTURE_DIRS` 设为一个 Django 需要额外寻找的目录列表。

`manage.py loaddata` 时，你也能指定一个到固定内容文件的路径，这将会覆盖查找常规目录的行为。

参见

固定内容通常备 测试框架 用于创建永久的测试环境。