>>> from django.core.management import call_command
>>> call_command('syncdb')
Run Code Online (Sandbox Code Playgroud)
从python脚本中执行syncdb管理命令.但是,我想运行相当于
$ python manage.py syncdb --noinput
Run Code Online (Sandbox Code Playgroud)
来自python shell或脚本.我怎样才能做到这一点?
如果不打扰我是否要创建超级用户的问题,以下行不起作用.
>>> call_command('syncdb', noinput = True) # asks for input
>>> call_command('syncdb', 'noinput') # raises an exception
Run Code Online (Sandbox Code Playgroud)
我使用Django 1.3.
使用类似的东西是否有任何缺点
from django.db.models.loading import get_model
def get_something():
model = get_model('app', 'Model')
return model.something()
Run Code Online (Sandbox Code Playgroud)
代替
from app.models import Model
def get_something():
return Model.something()
Run Code Online (Sandbox Code Playgroud)
第二个示例可以导致循环依赖,而第一个示例没有,但第二个示例更常见.
更新:如果第二个示例位于名为Other_Model的模型中,并且模型导入了Other_Model,则会出现循环依赖性错误 - 一个简单的循环导入.