Django模型:两个类之间的相互引用和在Python中无法使用前向声明

21

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

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

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

你看,问题在于这两个类互相引用彼此。无论以什么顺序实现这两个类,Python始终会引发NameError异常,抱怨其中一个类没有定义。

1个回答

49

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

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

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接