以下のような場面で Django モデルをアプリ外で使用することがあったので方法をまとめます。
- 初期データ(or サンプルデータ)をまとめて作成する
- 定期的に外部からデータを取得して, Django モデルとして DB に Insert する
Requirements
- Python 3.6
- django==2.2.2
- django-extensions==2.1.9
- pip
手順
1. django-extensions をインストール
$ pip install django-extensions
2. <project name>/settings.py
の INSTALLED_APPS
に django-extensions
を追加
INSTALLED_APPS = [
...
'django_extensions',
]
3. スクリプトを配置するディレクトリを作成
Django プロジェクト直下に scripts
という名前で作成します。
$ mkdir scripts
作成場所と名前が異なると動作しないので気をつけてください。
4. スクリプト作成
scripts
ディレクトリ直下に任意の名前で作成します。
$ tree
.
├── <project name>
├── db.sqlite3
├── <app name>
├── manage.py
└── scripts
├── <script file name>.py
├── batch.py # example
└── create_sample.py # example
run
という名前のメソッドが実行されるので、run
メソッドを用意してください。
from <app name>.models import <model class name>
def run():
...
5. スクリプト実行
Django プロジェクト直下から以下のコマンドを実行します。
$ python manage.py runscript <script file name>
runscript の後に指定するファイル名には .py
は不要です。
おわりに
django-extensions
には Django をより便利に使うための機能が他にもたくさん用意されているので、気になる方はドキュメントを見てみてください。