2011-09-04 66 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): 
    # ...