2011-09-04 8 views
14

Mam zdefiniowane dwa modele, gdzie każdy z nich odwołuje się do drugiego, tak jak poniżej:modele Django: wzajemne odniesienia pomiędzy dwoma klasami i niemożności korzystania naprzód oświadczenie w Pythonie

class User(models.Model): 
    # ... 
    loves = models.ManyToManyField(Article, related_name='loved_by') 

class Article(models.Model): 
    # ... 
    author = models.ForeignKey(User) 

widzisz, że problem jest zarówno referencje klas wzajemnie. Niezależnie od tego, w jakiej kolejności są realizowane te dwie klasy, python zawsze podnosi wyjątek NameError, narzekając, że jedna klasa nie jest zdefiniowana.

Odpowiedz

31

można znaleźć rozwiązanie w docs:

Jeśli trzeba utworzyć relację na modelu, który nie został jeszcze zdefiniowany, można użyć nazwy modelu, zamiast modelu obiektowego samo:

class Car(models.Model): 
    manufacturer = models.ForeignKey('Manufacturer') 
    # ... 

class Manufacturer(models.Model): 
    # ... 
Powiązane problemy