Настройка 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' 
Другие вопросы по тегам