2013-07-31 8 views
7

Immagina di avere due o più app nel mio progetto django, sono riuscito a scrivere ed eseguire comandi manage.py personalizzati quando avevo una sola app, A.Come scrivere comandi django manage.py personalizzati in più app

ora ho una nuova applicazione, B, e come accennato in https://docs.djangoproject.com/en/dev/howto/custom-management-commands/ ho creato la struttura di directory di B/manangement/commands e ha scritto un modulo personalizzato.

Quando eseguo python manage.py, continua a lamentarsi Unknown command. Tuttavia, se sposto questo comando su un'altra app, cioè nella cartella A/management/commands e quindi eseguo python manage.py <command>, funziona perfettamente.

Qualche idea su come posso risolvere questo problema?

+0

Non senza che tu ci mostri esattamente quello che hai fatto. –

+1

Probabilmente non hai aggiunto B nell'app installata nelle impostazioni. – Babu

+0

Immagino sia un errore di battitura, ma è meglio indicarlo. La parola "manangement" è errata. –

risposta

16

Come ha detto @Babu nei commenti, sembra che tu non abbia aggiunto la tua app a INSTALLED_APPS nel tuo settings.py.

È anche possibile che manchi i file __init__.py (richiesti nei moduli python) dalle cartelle management e commands.

In alternativa, (mi dispiace dirlo) potresti avere errori di "gestione" o "comandi" o persino il nome del comando che stai utilizzando.

+0

Grazie, i file __init__.py erano presenti nelle directory interne, mancati nella directory superiore. – user1335608

0

Molto probabilmente, non ha incluso app B nella tua settings.py

Se basta eseguire python manage.py senza comando specificato, verrà stampata la lista dei comandi Django può trovare.

Questo può aiutare a escludere errori di ortografia del nome del comando, ma non rispondere alla domanda di se o non hai fatto management e commands entrambi i pacchetti, o se App B semplicemente non è elencato nel vostro settings.INSTALLED_APPS

0

E ' sembra che tu non abbia registrato la tua app B in INSTALLED_APPS nel nostro settings.py. È inoltre necessario aggiungere un file __init__.py in entrambe le cartelle (gestione e comandi) per renderlo un pacchetto. Assicurati di scrivere correttamente i nomi delle cartelle.