外部から Django プロジェクトのデータベースを操作する
Django プロジェクト(ディレクトリ)の外部にある Python コードから、Django アプリケーションのデータベースを操作します。
ドキュメンテーションにあるように、モデルをインポートする前に以下の手順を実行しておきます。
1. プロジェクトのパッケージを sys.path に追加します。
2. DJANGO_SETTINGS_MODULE 環境変数がプロジェクトの settings.py を指すように設定します。
この手順なしに、外部のコードが Django の models モジュールをインポートした場合、ImportError が発生します。
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
ここでは、プロジェクト django_project のアプリケーション app_name にモデル models.py が定義されているとします。
other.py(シンボリック・リンク等で django_project を参照) /django_project __init__.py manage.py settings.py urls.py /app_name __init__.py models.py tests.py views.py
外部の Python コードは models をインポートする前に以下の手順を踏んでください。
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys # プロジェクトのパッケージを sys.path に追加する sys.path.append('django_project.app_name') import os # 環境変数 DJANGO_SETTINGS_MODULE にプロジェクトの settings をセット os.environ['DJANGO_SETTINGS_MODULE'] = 'django_project.settings' # Model モジュールをインポートする from django_project.app_name import models # データベースを操作可能になる models.ModelXXX(name='xxx').save() # 保存 models.ModelXXX.objects.all() # 取得