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

228 просмотра
0
0 Комментариев

Имеется модель:
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 Ответы

Python Опубликовано 16.12.2018
0

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

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

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up