2011-09-04 8 views
14

Ho definito due modelli in cui ognuno fa riferimento l'altro, in questo modo:modelli Django: riferimenti reciproci tra due classi e impossibilità di utilizzare in avanti dichiarazione in python

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

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

Vedete, il problema è entrambi i riferimenti classi l'un l'altro. Indipendentemente dall'ordine in cui queste due classi sono implementate, python solleva sempre l'eccezione NameError, lamentando che una delle due classi non è definita.

risposta

31

È possibile trovare la soluzione nel docs:

Se è necessario creare una relazione su un modello che non è ancora stato definito, è possibile utilizzare il nome del modello, piuttosto che l'oggetto del modello stesso:

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

class Manufacturer(models.Model): 
    # ...