Un module Python est importé en l'exécutant de haut en bas dans un nouvel espace de noms. Lorsque le module A importe le module B, l'évaluation de A.py est suspendue jusqu'à ce que le module B soit chargé. Lorsque le module B importe le module A, il obtient l'espace de noms partiellement initialisé du module A - dans votre cas, il manque la classe ModelA
car l'importation de myproject.modelb.models
se produit avant la définition de cette classe.
Dans Django, vous pouvez résoudre ce problème en vous référant à un modèle par son nom plutôt que par son objet. Ainsi, au lieu de dire
from myproject.modela.models import ModelA
class ModelB:
a = models.ForeignKey(ModelA)
que vous utilisez (sans l'importation):
class ModelB:
a = models.ForeignKey('ModelA')
dupe http://stackoverflow.com/questions/744373/python-cyclic-imports –
Je n'ai pas trouvé la réponse à mon problème, pourrais-je obtenir de l'aide s'il vous plaît? Ce que je fais n'est pas possible? – Clash