DjangoのFixtureを試してみる

DjangoのFixtureを試してみる。

Fixtureを置くためのディレクトリを作成。

$ mkdir app/fixtures

データを作成。

$ vi app/fixtures/initial_data.json
[
  {
    "model": "app.book",
    "pk": 1,
    "fields": {
      "price": 1000,
      "name": "hogehoge1",
      "created_at": "2021-01-01T12:34:56+09:00",
      "updated_at": "2021-01-01T12:34:56+09:00"
    }
  },
  {
    "model": "app.book",
    "pk": 2,
    "fields": {
      "price": 2000,
      "name": "hogehoge2",
      "created_at": "2021-01-01T12:34:56+09:00",
      "updated_at": "2021-01-01T12:34:56+09:00"
    }
  }
]

データを投入。

$ python3 manage.py loaddata initial_data.json

データが入ってる。

$ sudo -u postgres psql hoge_db
# select * from app_book;
 id | price |   name    | description |       created_at       |       updated_at
----+-------+-----------+-------------+------------------------+------------------------
  1 |  1000 | hogehoge1 |             | 2021-01-01 03:34:56+00 | 2021-01-01 03:34:56+00
  2 |  2000 | hogehoge2 |             | 2021-01-01 03:34:56+00 | 2021-01-01 03:34:56+00

※もう一回実行しても、pkが同じ値なら上書きされる。

※↑では、日付がUTCで表示されているが、PostgreSQLタイムゾーンを下記のように変えると日本時間で表示できる。

$ sudo vi /var/lib/pgsql/data/postgresql.conf
・・・
timezone = 'Asia/Tokyo'
・・・

$ sudo systemctl restart postgresql