Подтвердить что ты не робот

Совместное использование моделей приложений Django

Я буду кратким: чтобы работать в духе и идее приложения Django, нормально ли приложение импортировать модели из другого приложения? Скажем, пользовательское статистическое приложение будет импортировать модели из пользовательского приложения примерно так: из users.models импортировать пользователей

4b9b3361

Ответ 1

Если вы создаете внутреннее приложение, которое не имеет шансов когда-либо быть выпущенным для общественности, обязательно сделайте все, что захотите.

Если вы создаете внутреннее приложение, у которого мало шансов когда-либо публиковаться, но, возможно, будут использоваться будущими/текущими разработчиками, но обязательно задокументируйте, что приложение должно работать должным образом.

Если вы создаете приложение для публичного выпуска, постарайтесь сохранить его самостоятельным (и зависимым от django-internals, т.е. использовать то, что предоставляет django, когда это возможно). Если вам действительно нужно приложение сторонних разработчиков для работы, или если стороннее приложение сделает ваш код более управляемым, то обязательно включите зависимости, но будьте вдвойне документированы все требования и необходимая настройка.

В большинстве случаев вы можете делать почти все, что захотите, если у вас достаточно документации.

Однако мне приходится ставить под сомнение разумность создания вашей собственной модели User, которая имеет то же имя, что и django builtin auth.User.

Ответ 2

Ответ: да. Совершенно нормально для одного приложения внутри вашего проекта django для импорта моделей из другого приложения. Сила проекта django заключается в приложениях и их взаимодействиях.

Также убедитесь, что у вас есть приложения-утилиты, импортирующие модели из более общих приложений, а не наоборот. Поэтому приложение "userstatistics" должно импортировать модели из "пользовательского" приложения, но приложение "users" не должно полагаться на "пользовательскую статистику".

Если ваше приложение импортирует модели из стороннего приложения (скажем, django-piston), обязательно укажите это в файле требований.

Ответ 4

Не делай этого. У них будет одно имя приложения, и ORM будет запутано. Вместо этого используйте абстрактную модель и получайте ее от нее.