如何用call_command执行Django的`syncdb --noinput`?

pvo*_*ten 25 django django-admin syncdb

>>> 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.

pvo*_*ten 42

call_command('syncdb', interactive = False)
Run Code Online (Sandbox Code Playgroud)

编辑:

我在源代码中找到了答案.所有管理命令的源代码都可以在一个名为的python模块中找到management/commands/(command_name).py

syncdb命令所在的python模块是django.core.management.commands.syncdb

要查找命令的源代码,您可以执行以下操作:

(env)$ ./manage.py shell
>>> from django.core.management.commands import syncdb
>>> syncdb.__file__
'/home/user/env/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.pyc'
>>> 
Run Code Online (Sandbox Code Playgroud)

当然,检查syncdb.py的内容,而不是syncdb.pyc.

或者查看在线源代码,该syncdb.py脚本包含:

    make_option('--noinput', action='store_false', dest='interactive', default=True,
        help='Tells Django to NOT prompt the user for input of any kind.'),
Run Code Online (Sandbox Code Playgroud)

这告诉我们,如果我们想要使用该函数自动化命令--noinput,我们应该使用而不是在命令行上.interactivecall_command