Если в 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)
, он не может найти имя Производитель в пространстве имен, и это приведет к ошибке.
Чтобы обойти это, как правило, изменить порядок определения:
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 не будет вызывать ошибку.