Почему вьюхи Django из папки views не видят модель?
Имеем приложение с папкой views для вьюх. В ней есть __init__.py, как положено. Имеем папку для моделей. Всё, вроде, норм. Само django видит модели.
Образаюсь из урла к файлу вьюхи, которая должна импортировать модель. А она говорит, что ImportError: No module named models. Если вьюху положить в корень, поправить импорт в урлах, то всё работает. Рядом 100500 аналогичных приложений, которые работают. Более того, это тоже работало, а потом перестало.
В чём может быть проблема? Я уже пересоздавал, переназывал, копировал, но нет, из папки работать не хочет. __init__.py django видит, *.pyc создаёт, а модель не импортирует.
UPD: Проблема была в названии приложения (messaging), которое, видимо, перекрывалось с чем-то системным.
Сергей Горностаев, проверял
1) Импорта в __init__.py для вьюх нет, он пустой.
2) Импорта в __init__.py для моделей нет, он пустой.
Файлы никто ни на кого не ссылается. Где может быть зацикливание? Обращение идёт напрямую.
Не приходилось так организовывать код, но в таком варианте вам надо либо полный путь до моделей использовать аля from proj.app.models, или попробуйте относительный импорт from ..models
И кстати
2) Импорта в __init__.py для моделей нет, он пустой.
Но вопрос остаётся, почему эта папка не работает, как надо. Или что-то не так с models. Кстати, если из models вынести в models.py, то ничего не меняется.
776166, я это так понимаю - файл views/tg.py "не знает", что он package и он будет пытаться инклюдить models.py из той же папки, где сам находится. Файл tg.py из корня видит пакет models и поэтому может инлюдить оттуда.
tema_sun, походу, проблема была в названии приложения. Он назывался messaging. Если переименовать во что-то другое, нарпимер, в massaging, то всё в порядке.
Перерь придётся писать миграцию данных в БД… :)