Question

Afin de placer mes modèles dans les sous-dossiers que j'ai essayé d'utiliser le champ Meta app_label comme décrit ici .

Ma structure de répertoire ressemble à ceci:

  • projet
    • applications
      • foo
        • modèles
          • __ __ initialisation. Py
          • bar_model.py

Dans bar_model.py je définis mon modèle comme ceci:

from django.db import models

class SomeModel(models.Model):

    field = models.TextField()

    class Meta:
        app_label = "foo"

Je peux importer avec succès le modèle comme ceci:

from apps.foo.models.bar_model import SomeModel

Cependant, en cours d'exécution:

./manage.py syncdb

ne crée pas la table pour le modèle. En mode bavard je ne vois cependant que l'application « foo » est correctement reconnu (il est en INSTALLED_APPS dans settings.py). Déplacement du modèle à models.py sous foo fonctionne.

Y at-il une convention spécifique non documenté avec app_label ou avec tout le mécanisme qui empêche cette structure de modèle d'être reconnu par syncdb?

Était-ce utile?

La solution

Voir billet Django # 10985: Expliquer comment les modèles peuvent être organisés dans un répertoire

Il se peut que vous n'êtes pas importer vos modèles en __init__.py?

Autres conseils

syncdb ne va pas créer des tables pour les modèles ne sont pas situés dans <appname>.models, donc importer là-dedans, par exemple from apps.foo.models import SomeModel.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top