概要

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

以下の記事からリンクされています