概要
前回(ベーシック認証)のつづき。 loaddata
dumpdata
コマンドで DB データを登録する。
今回は
- 仮想マシンをリセットするたびに
createsuperuser
を毎度実行するのは面倒! - どっかにデフォルト値を置いといて、自動登録してくれよ!
というテーマでいこう。
初期値を手動で登録
今回は例として createsuperuser
で app.auth_user テーブルに一件登録する。
# 仮想マシンに入る。
$ vagrant ssh
# createsuperuser する。
$ source /env3.6/bin/activate
$ python /vagrant/manage.py createsuperuser --settings=config.settings.for_production
登録データを dumpdata
で保存
app.auth_user テーブルを initial_db_data.json に保存。
このテーブル名指定が結構曲者で、実際のテーブル名が app.auth_user なら auth.user
で指定だ。まだこのシリーズではモデルを作ってないけれど、モデルを作ると app.app_*** みたいなテーブルができるわけだが、その場合は app.***
になる。
$ python /vagrant/manage.py dumpdata auth.user --indent 4 --settings=config.settings.for_production > /vagrant/initial_db_data.json
リセットのたびに loaddata
で自動登録
provision.sh に initial_db_data.json をロードするコマンドを入れる。以下のように書いてたところを……
#
# DB の初期データをロードするコマンドを書く予定。
#
こうする。
# DB の初期データをロードする。
python /vagrant/manage.py loaddata /vagrant/initial_db_data.json --settings=config.settings.for_production
確認
仮想マシンをリセットして、 createsuperuser
せずに /admin/ にアクセスできれば成功だ。
# Vagrant 仮想マシンリセットコマンド。
$ vagrant halt && vagrant destroy -f && vagrant up
# おつかれやんした git commit.
$ git add --all
$ git commit -m "loaddata コマンド追加。"