0

django-push-notificationsにPUSH_NOTIFICATIONS_SETTINGSのためのsettings.pyでアプリケーションモデルをインポートしたいと思います。これは私のコードです: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. 

がどのように私はsetting.pyにMY_APPモデルをロードすることはできますか?

答えて

1

設定ファイルの中からモデルを読み込むことはできません。モデルは、すべてのアプリケーションが読み込まれた後にのみ読み込むことができます(設定が読み込まれた後にのみ可能です)。 django-push-notificationsのコードを見てみると

、あなたは点線のパスを文字列としてモデルを提供することができるはずです。

'USER_MODEL': 'my_app.User' 
1

あなたは設定でUserモデルをロードすることはできませんが、その代わり、あなたはそれを変更することができます

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

そして、あなたは、W行うことができますこのユーザーモデルで必要なものは何でも

関連する問題