из предложенных в этой ветке?
https://stackoverflow.com/questions/33691411/circular-imports-hell
А именно вот такой:
_MODULEA = None
def util1():
if _MODULEA is None:
from mymodule import modulea as _MODULEA
obj = _MODULEA.ClassYouWant
return obj
По виду урод уродом, конечно. Но должен дело свое делать. Что скажете?
https://docs.djangoproject.com/en/3.0/ref/applications/#django.apps.apps.get_model посмотри
Не моделями едиными. нужны еще утилиты, константы. Да мало ли что нужно.
если часто такие проблемы значит проблема в архитектуре, почитай про грасп, свзяанность, зацепленность и тд.
Да, у меня не получается сделать аккуратную архитектуру. Я это признаю. Но из того, что я сумел прочитать на форумах, невозможно написать на питоне программу, полностью лишенную проблемы кольцевого импорта.
Про связанность. Я бы хотел использовать что-то вроде dependency injection. Но я не могу это как-то все организовать в проекте на django.
возможно, просто ребята с форумов плохо стараются)
А нельзя ли мне посоветовать конкретные ресурсы к прочтению? Вот по Dependency injection в джанге? Про связанность я хотя бы слышал. Хотя, у меня не получается разбить тесную связанность. А про грасп и зацепленность я вообще впервые слышу. И материал найти не могу.
https://ru.wikipedia.org/wiki/GRASP максимально простым языком: https://www.youtube.com/watch?v=pswA3Prf_YQ
спасибо. в общем, надо думать о DI.
Вы используете DI в проектах на джанге? Если да, то как (какой-то di-фреймворк или что-то самописное)?
не использую
а как же тогда побороть тесную связанность?
https://softwareengineering.stackexchange.com/questions/306483/how-to-solve-circular-dependency вот тут есть информация про борьбу с циклическими зависимостями.
продумывать архитектуру
Так это джависты. Мне джава нравится. Но все-таки я на ней не работаю. Лучше бы как-то поближе к питону.
Обсуждают сегодня