2010-01-07 2 views
7

J'ai essayé de mettre une application à l'intérieur d'une autre application (Outer est une façade dans l'intérieur, donc il est logique de les localiser de cette façon), et il ne crée pas de table pour le modèle dans cette application interne. Est-ce normal? (l'application est installée et enregistrée auprès de l'administrateur)Django: Puis-je avoir une application dans un sous-dossier d'une autre application?

+2

Pas sûr, mais vous devrez peut-être ajouter l'application interne à la liste de 'INSTALLED_APPS' en tant que" nom_application_extérieure.nom_application ". –

+0

Oui, ça marche. J'ai eu une foutue erreur de syntaxe, c'est pourquoi ça n'a pas marché, mais id n'a pas attrapé l'erreur pendant syncdb. – orokusaki

Répondre

5

Django charge les modèles en important le module models de chaque package dans le paramètre INSTALLED_APPS. Par exemple, avec un paramètre INSTALLED_APPS de ('django.contrib.admin', 'django.contrib.comments', 'spam.ham', and 'eggs'), Django importera des modèles de django.contrib.admin.models, django.contrib.comments.models, spam.ham.models et eggs.models.

Si vous ne faites que lister votre application externe dans INSTALLED_APPS (nous supposerons que son nom est eggs), seuls les modèles de eggs.models seront importés et créés. Pour obtenir les modèles installés à partir de votre application interne, vous devrez également l'ajouter au INSTALLED_APPS, comme eggs.inner_app, de sorte que eggs.inner_app.models soit importé. (Pour faciliter les clés étrangères, je suis certain que si vous importez des modèles d'une application dans le fichier models.py d'un autre, seuls les modèles définis dans le fichier models.py seront créés.)

Questions connexes