为模型提供初始数据

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

用夹具提供初始数据

fixture是Django知道如何导入数据库的数据集合。 如果已经有一些数据,那么最简单的方法就是使用manage.py dumpdata命令。 Or, you can write fixtures by hand; fixtures can be written as JSON, XML or YAML (with PyYAML installed) documents. serialization documentation有更多关于这些支持的serialization formats的详细信息。

举一个例子,虽然,下面是简单的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目录中。

Loading data is easy: just call manage.py loaddata <fixturename>, where <fixturename> is the name of the fixture file you’ve created. 每次运行loaddata时,数据将从夹具中读取并重新加载到数据库中。 请注意,如果您更改由灯具创建的行之一,然后再次运行loaddata,则会消除您所做的任何更改。

Django找到夹具文件

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

在运行manage.py loaddata时,还可以指定一个夹具文件的路径,这将覆盖搜索常用目录。

也可以看看

夹具也被testing framework用来帮助建立一个一致的测试环境。

为迁移提供初始数据

如果你想自动加载一个应用程序的初始数据,不要使用灯具。 而是使用RunPythonRunSQL操作为您的应用程序创建迁移。