Модели Django: взаимные ссылки между двумя классами и невозможность использовать предварительное объявление в Python - PullRequest
16 голосов
/ 04 сентября 2011

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

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

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

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

1 Ответ

34 голосов
/ 04 сентября 2011

Вы можете найти решение в документах :

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

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

class Manufacturer(models.Model):
    # ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...