django.apps apps.get_model ('app_name.model_name') не находит моделей - PullRequest
0 голосов
/ 04 марта 2019

Я новичок в Django и использую Django 2.1.7.

До сегодняшнего дня у меня была (простая) рабочая система.Затем мне нужно было ввести циклическую зависимость между двумя моими классами моделей, которая создает циклический импорт и вызывает проблемы и т. Д ...

Я прочитал, что начиная с Django 1.7 правильный способ импортировать циклическую зависимость между моделямиis:

from django.apps import apps
from django.db import models

Model2 = apps.get_model('my_app.Model2')

class Model1(models.Model):
    # use Model2 where needed

Однако, я всегда вижу ошибку:

LookupError: Приложение 'my_app' не имеет модели 'Model2'.

Обратите внимание, что и Model1, и Model2 находятся в одном приложении, поэтому я попытался вызвать apps.get_model() как с префиксом приложения, так и без него.

Если я просто удалил циклическую зависимость (т.е.: Model1 больше не ссылается Model2), обе модели прекрасно работают в системе независимо друг от друга.Запросы к БД работают, makemigrations работает, migrate работает и т. Д ...

И, конечно, в моем файле settings.py: «my_app» объявлен в верхней части INSTALLED_APPSмассив.Я также пытался переместить его на дно.

Что дает?Кажется, так просто, я не знаю, чего мне не хватает.

Нужно ли явно регистрировать мои модели где-то еще?

...