我有bootstrap
脚本执行syncdb
和migrate
:
import settings
from django.core.management import setup_environ, call_command
setup_environ(settings) # Setting up the env settings
call_command('syncdb', migrate=True, interactive=False) # Sync the database
预要件:
django-south
用于迁移。流程发生:
initial_data
fixture包含由迁移创建的模型的数据。syncdb
会创建除迁移存在的应用之外的所有表。syncdb
它会尝试加载initial_data
并引发找不到db的错误,因为带有迁移的app表不是由syncdb创建的。 [问题] migration
这次会成功自动加载initial_data
。问题:
error
?initial_data
之后加载migration
?答案 0 :(得分:2)
您可以在syncdb:
时禁用加载初始数据call_command('syncdb', load_initial_data=False, interactive=False)
call_command('migrate', interactive=False)
来自syncdb.py的源代码:
# Stealth option -- 'load_initial_data' is used by the testing setup
# process to disable initial fixture loading.
load_initial_data = options.get('load_initial_data', True)
答案 1 :(得分:0)
有几种方法可以解决这个问题:
我个人会选择1或3.使用第一点,将灯具分别存储在灯具文件夹下的每个应用中。但是,如果您的模型发生变化,这很难更新。因此,编写自定义管理命令可能是最无痛的。