使用Django 1.7+和数据迁移加载初始数据

9 浏览
0 Comments

使用Django 1.7+和数据迁移加载初始数据

我最近从Django 1.6升级到了1.7,并开始使用迁移(我以前没有使用South)。

在1.7之前,我通常使用一个fixture/initial_data.json文件来加载初始数据,这个文件是通过python manage.py syncdb命令(在创建数据库时)加载的。

现在,我开始使用迁移,而这种行为已被弃用:

如果一个应用程序使用了迁移,那么就不会自动加载fixture。

由于Django 2.0将要求应用程序使用迁移,因此此行为被视为已弃用。如果您想为应用程序加载初始数据,请考虑在数据迁移中执行。

(https://docs.djangoproject.com/en/1.7/howto/initial-data/#automatically-loading-initial-data-fixtures)

官方文档没有明确的示例说明如何实现,所以我的问题是:

使用数据迁移导入此类初始数据的最佳方法是:

  1. 编写多个调用mymodel.create(...)的Python代码,
  2. 使用或编写一个Django函数(类似于调用loaddata)从JSON fixture文件中加载数据。

我更喜欢第二个选项。

我不想使用South,因为Django现在似乎能够原生支持。

0