Настройка Django - приложения еще не загружены
Я хочу импортировать модель приложения в setting.py для PUSH_NOTIFICATIONS_SETTINGS в django-push-уведомлениях. Это мой код:
INSTALLED_APPS = (
....
'my_app',
'push_notifications'
....
)
from my_app.models import User
PUSH_NOTIFICATIONS_SETTINGS = {
'GCM_API_KEY': 'xxxxx',
'APNS_CERTIFICATE': 'xxxxx.pem',
'USER_MODEL': User, # i want to change the default from auth_user to my_app User
}
Но это вызывает ошибку в этой строке:
from my_app.models import User
Ошибка:
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
Как я могу загрузить модель my_app в setting.py?
2 ответа
Вы не можете загрузить модель пользователя в настройках, но вместо этого вы можете изменить ее
PUSH_NOTIFICATIONS_SETTINGS = {
'GCM_API_KEY': 'xxxxx',
'APNS_CERTIFICATE': 'xxxxx.pem',
'USER_MODEL': 'my_app.User',
}
И использовать его позже, как:
from django.apps import apps
from django.conf import settings
User = apps.get_model(settings.PUSH_NOTIFICATIONS_SETTINGS['USER_MODEL'])
И вы можете делать все, что вы хотите с этой моделью пользователя
Вы не можете загружать модели из своего файла настроек таким образом - модели могут быть загружены только после загрузки всех приложений (что может произойти только после загрузки настроек).
Глядя на код в django-push-notifications
, вы должны быть в состоянии предоставить модель в виде строки с пунктирным путем:
'USER_MODEL': 'my_app.User'