0

Я хочу импортировать модель приложений в settings.py для PUSH_NOTIFICATIONS_SETTINGS в django-push-notifications. Это мой код:Настройки Django - приложения еще не загружены

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?

ответ

1

Вы не можете загружать модели из своего файла настроек, так как модели можно загружать только после загрузки всех приложений (что может произойти только после загрузки настроек).

Глядя на код в django-push-notifications, вы должны быть в состоянии предоставить модель в виде строки с пунктирной пути:

'USER_MODEL': 'my_app.User' 
1

Вы не можете загрузить модели пользователя в настройках, но вместо этого вы можете изменить его

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']) 

И вы можете сделать вес что бы вы хотели с этой моделью пользователя

Смежные вопросы