@vfvnvsyevsky

Как импортировать одну модель в другую?

При импорте:
from userprofile.models import CustomUser
выдает ошибку:
ImportError: cannot import name CustomUser
Импортирую из модели userprofile в модель items соответсвенно.

Структура проекта (красная линия откуда куда импорт):
9a4d0034596a4df5909eee7eae9a388a.png
  • Вопрос задан
  • 619 просмотров
Пригласить эксперта
Ответы на вопрос 2
oshikuru
@oshikuru
Python-разработчик, не брезгую js / html / css
Скорее всего - циклический импорт. В файле вы импортируете другой файл и наоборот. Болезнь частая
Ответ написан
suguby
@suguby
программист, python, django, mysql, git, hg, linux
Я лечу циклические импорты выделением в отдельный модуль объектов, которые нужны "всем" и оттуда их портирую. Зачастую это можно сделать, но иногда приходится долго прыгать по файлам, выясняя кто кого когда портировал.

Еще способ избегания циклов - портировать "по месту", например прямо в теле функции, юзающей библу. Минусы - импорты раскиданы по коду и сложно сделать рефактор при изменении модуля, который портируется. На производительность это не влияет (ну или минимально влияет), так как реальный импорт-парсинг происходит только при первом выполнении оператора import, а далее юзается .pyc файл.

Кстати в Django можно юзать строку названия модели вместо самой модели, например:
class GoalReach(MyAbstractModel, TestFactoryBoy):
    ....
    visit = ForeignKey('Visit', null=True, blank=True, related_name='goal_reached', on_delete=CASCADE)
   .....

Visit - это модель из другого модуля, она записана как 'Visit' (в кавычках) при старте django её находит через installedapps
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы