Django模型:两个类之间的相互引用和在python中使用前向声明的不可能性

koo*_*koo 17 python django model foreign-keys forward-declaration

我定义了两个模型,每个模型引用另一个模型,如下所示:

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

class Article(models.Model):
    # ...
    author = models.ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)

你看,问题是两个类都互相引用.无论这两个类的实现顺序如何,python总是引发NameError异常,抱怨任何一个类都没有定义.

Ben*_*end 37

您可以在文档中找到解决方案:

如果需要在尚未定义的模型上创建关系,可以使用模型的名称,而不是模型对象本身:

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

class Manufacturer(models.Model):
    # ...
Run Code Online (Sandbox Code Playgroud)