2016年12月07日

jq で django の fixture 作り

django の fixture を既存データから作る方法のメモ。

$ python manage.py dumpdata foo.FooChild |\
 jq "[.[] | select(.fields.foo == 40)]" > foo/fixtures/foochild-40.json

一応説明も残しておく。 ここでは foo アプリのモデル FooChild が Foo を外部キーにもっていて、Foo の id=40 に関連するオブジェクトを引っ張り出したいという状況を想定して書いている。 前段の dumpdata コマンドは、FooChild のデータを(デフォルトの JSON として)ダンプするもの。 後段の jq は使い方が正直マニュアルを読んでもなかなかピンとこなかったのだが、 ここでやっているのは、 最初に .[] でリストをばらして、 select(.fields.foo == 40) で foo が 40 であるものを抜き出し、 最終的に [] で括ってリストに戻す、 という作業。 最後に foo/fixtures ディレクトリに foochild-40.json という名前で保存している。

ラベル:JQ Django
posted by mft at 18:46| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする