Зависимость круговой модели Django

У меня есть круговая зависимость в моих моделях Django, так что модель A имеет ссылку на внешний ключ для B, а B имеет ссылку «многие-ко-многим» на A. Я консультировался с другими сообщениями SO и вместо этого использовал имена строковых моделей от фактических классов, но безрезультатно. Ниже приведены сокращенные версии двух моих классов:

Модель пользователя

import listings.models class User(models.Model): ... favorites = models.ManyToManyField('listings.models.Listing') 

Листинг модели

 import users.models class Listing(models.Model): ... owner = models.ForeignKey('users.models.User') 

Каждый раз, когда я пытаюсь запустить syncdb , он выдает следующую ошибку:

Ошибка: одна или несколько моделей не подтвердили: users.user: «избранное» имеет отношение m2m к списку моделей. Моделей. Листинг, который либо не был установлен, либо является абстрактным. listings.listing: «владелец» имеет отношение к модели users.models.User, которая либо не была установлена, либо является абстрактной.

Как я могу разрешить это, не жертвуя установленными отношениями?

  • 'listings.models.Listing' должен быть 'listings.Listing'
  • 'users.models.User' должен быть 'users.User' (или 'auth.User' если вы должны использовать django.contrib.auth.models.User )

Дополнительную информацию см. В официальной документации .

Вы можете просто удалить свои импорт, потому что вы не зависите от них по коду. Вы используете только строку с именем модели – это не зависимость. Также вы должны удалить models – из своих строк, потому что вы можете ссылаться на свою модель как app_name.model_name