У меня есть приложение авторизации, которое используется вместо django собственного auth
приложения, которое называется authentication
. Обычно в проектах указывается AUTH_USER_MODEL = 'authentication.User'
.
. Есть некоторые другие проекты, которые используют отдельный бэкэнд аутентификации и API, который добавляет дополнительные поля / методы в модель User
.
Поскольку это дополнительные функции используются не во всех проектах. Я бы хотел, чтобы это было дополнительное подпрограмма для authentication
. Поэтому я добавил его в настройку пакета как дополнительное;
setup(
name='authentication',
extras_require={
"api_app": ["api_client>=3.0.1"],
},
api_app
затем добавляется в качестве дополнительного приложения к authentication
:
- authentication
-- apps.py
-- models.py
-- api_app
--- apps.py
--- models.py
С этим У меня есть две модели для пользователей: User
в authentication.models
и APIUser
в authentication.api_app.models
. Для проектов, использующих APIUser
, у меня есть следующие настройки:
# AUTH_USER_MODEL = 'authentication.User'
AUTH_USER_MODEL = 'authentication_api.APIUser' # Needs to be `app_label.Model`
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.humanize',
'django.contrib.messages',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.staticfiles',
'authentication',
'authentication.api_app',
'api_client'
]
api_app.__init__
default_app_config = 'authentication.api_app.apps.APIConfig'
api_app
определяется как;
class APIConfig(AppConfig):
label = 'authentication_api' # in an attempt to support `app_label.Model` ref in settings
name = 'authentication.api_app'
verbose_name = "API Authentication"
При такой конфигурации django считает, что authentication_api
не установлен, но AUTH_USER_MODEL
поддерживает только app_label.Model
и ничего более сложного, так как я могу настроить это приложение для поддержки модели верхнего уровня или модель подуровня для AUTH_USER_MODEL
?
Ошибка, которую я получаю с вышеуказанной настройкой;
django.core.exceptions.ImproperlyConfigured:
AUTH_USER_MODEL refers to model 'authentication_api.APIUser' that has not been installed