【问题标题】:Django models: mutual references between two classes and impossibility to use forward declaration in pythonDjango模型:两个类之间的相互引用以及在python中无法使用前向声明
【发布时间】:2011-11-10 00:44:30
【问题描述】:

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

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

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

你看,问题是两个类相互引用。不管这两个类以什么顺序实现,python总是抛出NameError异常,抱怨一个类没有定义。

【问题讨论】:

    标签: python django model foreign-keys forward-declaration


    【解决方案1】:

    您可以在docs找到解决方案:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-25
      • 1970-01-01
      • 2019-04-02
      • 1970-01-01
      • 2012-12-08
      • 2021-10-15
      相关资源
      最近更新 更多