Подтвердить что ты не робот

Модели Django: взаимные ссылки между двумя классами и невозможность использования форвардной декларации в python

Я определил две модели, каждая из которых ссылается на другую:

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

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

Вы видите, проблема заключается в том, что оба класса ссылаются друг на друга. Независимо от того, в каком порядке эти два класса реализованы, python всегда вызывает исключение NameError, жалуясь, что один класс не определен.

4b9b3361

Ответ 1

Вы можете найти решение в docs:

Если вам нужно создать отношение к модели, которая еще не определена, вы можете использовать имя модели, а не сам объект модели:

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

class Manufacturer(models.Model):
    # ...