2011-09-04 64 views
14

我已經定義了兩種型號,其中每一個引用其他,像這樣使用前向聲明:Django模型:兩個階級,不可能相互引用在Python

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

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

你看,問題是這兩個類的引用彼此。無論這兩個類以何種順序執行,python總是會提出異常,抱怨一個類沒有被定義。

回答

31

您可以找到docs解決方案:

如果你需要創建一個尚未被定義的模型的關係,您可以使用該模型的名稱,而不是模型對象本身:

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

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