Как сделать ссылку на модель, которая ещё не объявлена?

Kanvi

Имеется модель: models.py

class Country(models.Model):
    id = models.IntegerField(primary_key=True, unique=True) # Код страны
    name = models.CharField(max_length=100) # Название страны

class Area(models.Model):
    id = models.IntegerField(primary_key=True, unique=True) # Код региона
    name = models.CharField(max_length=100) # Название региона
    country = models.ForeignKey(Country) # Код страны
    capital = models.ForeignKey(City) # Код столицы региона

class City(models.Model):
    id = models.IntegerField(primary_key=True, unique=True) # Код города
    name = models.CharField(max_length=100) # Название города
    country = models.ForeignKey(Country) # Код страны
    area = models.ForeignKey(Area) # Код региона

Необходимо в Area (регионы) иметь ссылку на город (административный центр) в City.

Соответственно в трейсбеке получаю ошибку:

NameError: name 'City' is not defined
1 ответ

Kanvi

На момент инициализации ForeignKey(City) модель City еще не создана, поэтому либо перенесите её выше создания модели Area, либо пропишите название модели строчно:

capital = models.ForeignKey('City', related_name='capitals') # Код страны

licensed under cc by-sa 3.0 with attribution.