Столкнулся с проблемой быстро растущего models.py на django, около 5т строк в сумме, возникла необходимость разделить на разные файлы. Разбил штук на 6, по документации сделал пакет с __init__.py, там все импорты нормально стоят. Но эти модели друг с другом очень тесно связаны, во многих используется класс моделей из других файлов, отсюда возникает большое количество импортов между ними и ошибка circular import, не представляю как можно это исправлять. Как мне кажется, единственный выход - каждый раз вызывать apps.get_model() внутри каждого метода, но уж больно криво звучит.
Чтобы избежать циклического импорта, используйте либо, как вы упомянули, apps.get_model(), либо импорт модуля целиком, а не конкретно моделей. То есть, не from somemodule.models import SomeModel,
а import somemodule.models as somemodule_models
и затем к модели обращайтесь в коде через somemodule_models.SomeModel.objects(...)...