BLOGサブスレッドの日常

2021.04.05

Django の dumpdata のマルチバイト文字をそのまま出したい

torikai

Django の dumpdata のマルチバイト文字をそのまま出したい鳥飼です。よろしくお願いします。

結論

シリアライザのモジュールを追加して、dumpdataのフォーマットに指定します。

settings.py

SERIALIZATION_MODULES = {
    'myjson': 'path.to.serializers.myjson',
}

path/to/serializers/myjson.py

# -*- coding:utf-8 -*-
from django.core.serializers.json import Serializer as JsonSerializer


class Serializer(JsonSerializer):
    def start_serialization(self):
        super(Serializer, self).start_serialization()
        self.json_kwargs['indent'] = 4
        self.json_kwargs['ensure_ascii'] = False

python manage.py dumpdata hoge.fuga --format myjson

[{
    "model": "hoge.fuga",
    "pk": 1,
    "fields": {
        "created_at": "2021-04-05T00:47:00.000Z",
        "modified_at": "2021-04-05T00:47:00.000Z",
        "code": "hogehoge",
        "label": "ほげほげ"
    }
}]

良い感じですね!

他にも、JSONエンコーダーを指定してみたり、お好みで出力を調整できそうです。
こういうカスタマイズをさくっとできちゃうのは良いですね! Django 便利!
今日のひとネタでした。

この記事を書いた人

torikai