2016-12-21 11 views
1

プロジェクト外でdjangoモデルを使用する方法について、多くの回答があります。しかし、私は成功していない。私はthis答えを実装しようとしていたが、私はエラーが発生します。私は私のアプリの中に新しいファイル "script.py"を作成しました。私はこのスクリプトを実行すると新しいスクリプトからdjangoモデルにアクセスする

script.py

from django.conf import settings 
settings.configure(
    DATABASE_ENGINE = 'sqlite3', 
    DATABASE_NAME = '/home/shivam/study/Python/automation/project/db.sqlite3', 
    DATABASE_USER = '', 
    DATABASE_PASSWORD = '', 
    DATABASE_HOST = '', 
    DATABASE_PORT = '', 
    TIME_ZONE = 'America/New_York', 
) 
from models import * 

は、私はエラーを取得します。

Traceback (most recent call last): 
    File "script.py", line 11, in <module> 
    from models import * 
    File "/home/shivam/study/Python/automation/project/videos/models.py", line 11, in <module> 
    class video(models.Model): 
    File "/home/shivam/study/Python/automation/env/local/lib/python2.7/site-packages/django/db/models/base.py", line 105, in __new__ 
    app_config = apps.get_containing_app_config(module) 
    File "/home/shivam/study/Python/automation/env/local/lib/python2.7/site-packages/django/apps/registry.py", line 237, in get_containing_app_config 
    self.check_apps_ready() 
    File "/home/shivam/study/Python/automation/env/local/lib/python2.7/site-packages/django/apps/registry.py", line 124, in check_apps_ready 
    raise AppRegistryNotReady("Apps aren't loaded yet.") 
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet. 

誰か助けてもらえますか?

+1

なぜ管理コマンドを作成しませんか? – RemcoGerlich

答えて

8

インポート可能な設定が必要です。

import os 
import django 
os.environ["DJANGO_SETTINGS_MODULE"] = 'project.settings' 
django.setup() 
from .models import 

もう一つの方法は、Djangoのシェル経由でスクリプトを呼び出す:

python manage.py shell < script.py 
+1

最後に、何かが働いた:) –

+0

https://gist.github.com/mtt2p/2dd1a80e45958452379b83c59f63883d – mtt2p

+0

このソリューションは私のために働かなかったし、このエラーを与えた: 'django.core.exceptions.AppRegistryNotReady:アプリケーションはまだ読み込まれていません。 –

1

例外として、インストールされているアプリはありません。まだモデルがありません。

from django.conf import settings 
settings.configure(
    DATABASE_ENGINE = 'sqlite3', 
    DATABASE_NAME = '/home/shivam/study/Python/automation/project/db.sqlite3', 
    # .... 
    INSTALLED_APPS=["myapp","myotherapp"] 

) 
from myapp.models import * 
+0

ファイル "script.py"、12行目、 videos.models import * ImportError:movies.modelsという名前のモジュールがありません ここで「videos」はアプリの名前です。 –

+0

アプリはあなたの 'PYTHONPATH'にありますか?私は 'script.py'が' videos'フォルダの外にあると仮定しています。 – yorodm

+0

私はscript.pyをビデオの外に保管しましたが、元のエラーが表示されます。 –

0

あなたmanage.pyが置かれているディレクトリにあるスクリプトから、次の解決策の作業:

import os 
from django.conf import settings 
from django.apps import apps 

conf = { 
    'INSTALLED_APPS': [ 
     'Demo' 
    ], 
    'DATABASES': { 
     'default': { 
      'ENGINE': 'django.db.backends.sqlite3', 
      'NAME': os.path.join('.', 'db.sqlite3'), 
     } 
    } 
} 

settings.configure(**conf) 
apps.populate(settings.INSTALLED_APPS) 

デモをあなたのアプリ名に置き換えて、あなたのアプリのための正しいデータベース設定を入れてください。このソリューションは私にとってDjango 1.9で働いていました。

関連する問題