2010-12-15 14 views

Respuesta

6

lo puso en el directorio de la aplicación correspondiente. Por ejemplo, si usted tiene un proyecto como:

my_project/ 
    my_app/ 
     models.py 
     views.py 
     tests.py 

Pegúela aquí:

my_project/ 
    my_app/ 
     management.py 
     models.py 
     views.py 
     tests.py 

(Eso hará que un módulo de gestión dentro del * my_app * paquete, en la terminología de Python.)

+0

Entonces, cuando ejecuto syncdb, ¿usará automáticamente ese archivo management.py? ¿Qué significa "conectado a la señal syncdb"? – TIMEX

+2

Cuando Django carga la aplicación, cargará y ejecutará todos los módulos en esa aplicación, por lo que se ejecutará 'management'. Django usa señales para permitir que partes de una aplicación sean notificadas sobre lo que otras partes de la aplicación están haciendo. 'syncdb' es una de esas señales que se activa cuando se llama a' manage.py syncdb'. – mipadi

+0

OK gracias. Básicamente, simplemente creo ese archivo, y eso es todo. Ejecuto syncdb como de costumbre. ¿Qué pasa si estoy usando el sur? funcionará si estoy usando schemamigrations? Si no, entonces tengo que ejecutar Management.py manualmente, ¿verdad? – TIMEX

1

No todos los módulos en la aplicación django se ejecutan al inicio del proyecto. Solo models.py es. Es feo, pero puedes poner el código allí. El archivo management.py es probablemente un error.

0

From the Django manual:

django.db.models.signals.pre_syncdb

enviados por el comando syncdb antes de que comience a instalar una aplicación.

Cualquier controlador que escuche esta señal debe escribirse en un lugar determinado: un módulo de gestión en uno de sus INSTALLED_APPS. Si los controladores están registrados en cualquier otro lugar, es posible que syncdb no los cargue.

Eso es porque syncdb no cargará todas las partes del proyecto de Django, por lo que si desea definir sus señales para syncdb en models.py, no lo encontraría, pero las señales definidas aquí no necesita estar en cualquier parte más en el marco.

Cuestiones relacionadas