setup data django django-admin syncdb

data - ¿Cómo puedo realizar el `syncdb--noinput` de Django con call_command?



export data django (1)

>>> from django.core.management import call_command >>> call_command(''syncdb'')

ejecuta el comando de administración syncdb desde un script de python. Sin embargo, quiero correr el equivalente de

$ python manage.py syncdb --noinput

desde dentro de un shell o script en python. ¿Cómo puedo hacer eso?

Las siguientes líneas no funcionan sin que me interrumpa con la pregunta de si quiero crear un superusuario.

>>> call_command(''syncdb'', noinput = True) # asks for input >>> call_command(''syncdb'', ''noinput'') # raises an exception

Yo uso Django 1.3.


call_command(''syncdb'', interactive = False)

EDITAR:

Encontré la respuesta en el código fuente. El código fuente de todos los comandos de administración se puede encontrar en un módulo de python llamado management/commands/(command_name).py

El módulo de python donde reside el comando django.core.management.commands.syncdb es django.core.management.commands.syncdb

Para encontrar el código fuente del comando puedes hacer algo como esto:

(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'' >>>

Por supuesto, verifique el contenido de syncdb.py, y no syncdb.pyc.

O mirando la fuente en línea , el script syncdb.py contiene:

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

eso nos dice que, en lugar de --noinput en la línea de comandos, deberíamos usar la función interactive si queremos automatizar comandos con la función call_command .