根据Providing initial data for models,为原本想用数据库导出的sql,在app目录下建立sql目录,然后增加modelname.sql的文件,根据文档所说会在syncdb期间create table之后自动执行这个目录下的sql,但不知道是sql语句不符合要求还是怎样,总之没成功,即使我又删除了表用migrate命令也是。 反正这个特性django 2.0以后也不会支持,所以还是尝试采用正确的姿势吧。于是 根据下面两份资料结合Providing initial data for models我用了几个步骤搞定了。 Initial data and install-time code Prefer data migrations to initial data 1.
./manage.py dumpdata yourappname > init.json
在app文件夹下创建fixtures,将init.json放进来。 2.
./manage.py datamigration myapp mymigrationname
app的migrations文件夹下会多出xxxx_mymigrationname.py的文件,打开编辑。
def forwards(self, orm):
from django.core.management import call_command
call_command('loaddata', 'init.json')
3. 执行./manage.py migrate xlinks,然后就会执行新的mirgration Initial data and install-time code这篇文章说可以用initial_data命名的fixture file,在syncdb的时候执行,由于我已经创建好数据结构了,所以只好再增加个datamigration来执行migrate,那种方法也就没尝试。