如果models.py
你有这个:
class Car(models.Model):
name = models.CharField(max_length=200)
manufacturer = models.ForeignKey(Manufacturer)
class Manufacturer(models.Model):
name = models.CharField(max_length=200)
由于该类Manufacturer
是在 之后 Car
定义的,当解释器到达这一行时:models.ForeignKey(Manufacturer)
,它在命名空间中找不到名称Manufacturer,并且会导致错误。
为了解决这个问题,通常您更改定义的顺序:
class Manufacturer(models.Model):
name = models.CharField(max_length=200)
class Car(models.Model):
name = models.CharField(max_length=200)
manufacturer = models.ForeignKey(Manufacturer)
现在,当解释器到达制造商外键定义时,该类已经被定义(因为它在Car
类之前声明)。另一种方法是这样做;如果您不想打乱模型声明的顺序,请使用一个字符串,该字符串是您要引用的模型的名称。由于它是字符串而不是名称,Python 不会引发错误。