概要
前回(ベーシック認証)のつづき。 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 コマンド追加。"