提供模型的初始数据

当你首次建立一个应用的时候,为你的数据库预先安装一些硬编码的数据,是很有用处的。 您可以提供具有夹具或迁移的初始数据。

使用灯具提供初始数据

fixture是数据的集合,让Django了解如何导入到数据库中。 创建fixture的最直接的方式,是使用manage.py dumpdata命令,如果数据库中已经有了一些数据。 或者,您可以手动写入灯具;夹具可以写成JSON,XML或YAML(安装了PyYAML)文档。 serialization documentation中详细阐述了每一种所支持的serialization formats

下面这个例子展示了一个简单的Person 模型的fixtrue,看起来很像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>是你所创建的fixture文件的名字。 每次你运行loaddata的时候,数据都会从fixture读出,并且重复加载进数据库。 注意这意味着,如果你修改了fixtrue创建的某一行,然后再次运行了 loaddata,你的修改将会被抹掉。

Django找到夹具文件

通常,Django 在每个应用的fixtures目录中寻找fixture文件。 你可以设置FIXTURE_DIRS选项为一个额外目录的列表,Django会从里面寻找。

运行manage.py loaddata命令的时候,你也可以指定一个fixture文件的目录,它会覆盖默认设置中的目录。

请参见

fixtrues也被用于testing framework来搭建一致性的测试环境。

提供迁移初始数据

如果要自动加载应用程序的初始数据,请勿使用固定装置。 而是使用RunPythonRunSQL操作为应用程序创建迁移。