LoginSignup
2
0

More than 1 year has passed since last update.

Django 3 JSONFieldの日本語をunicode化させない方法

Posted at

開発環境:django3.0.7, python3.7, mysql

新しいバージョンの環境では別の設定方法があるかも知れませんが・・・。

DjangoのJSONFieldで日本語が入ったdictをDBに登録してみたら、日本語がunicodeになってしまって人が読めない状態になりました。それで日本語が日本語のまま登録される方法があるか見てみました。

これは試したが、失敗

json.dumpsensure_ascii=Falseを指定すると日本語がunicodeにならないstr値を取得できます。
それでdictではなくてjson.dumpsで変換したstrを入れてみました。

model.jsoncol = json.dumps({ "ほげほげ": "テスト" }, ensure_ascii=False)

ですが、結果は同じく日本語はunicodeになっていました。

これで解決!

JSONFieldの親クラスのJSONFieldMixin処理の中にjson.dumpsを呼び出す箇所がありました。
JSONFieldの引数のdump_kwargsを指定したら、json.dumpsにまで渡される仕組みでした。
それで以下のように設定して解決!

sample_filed = JSONField(dump_kwargs={ "ensure_ascii": False })

DBのレコードに日本語が日本語のままになって登録されて人が読めるようになりました。

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0