Django Logo

[Django REST framework]特定のフィールドのエラーメッセージをカスタマイズする

DjangoDjango REST framework を使用していたときに、 ModelSerializer を利用した Serializer クラスで特定のフィールドに対してエラーメッセージを表示する方法を調べたのでメモしておきます。

前提条件

  • Python : 3.9.1
  • Django : 2.0.7
  • djangorestframework : 3.8.2

実装サンプル

まず、以下のように実装された ModelSerializer の「 name 」と「 value 」のフィールドに対するエラーメッセージをカスタマイズしたいと思います。

from rest_framework import serializers
from .models import Sample

class SampleSerializer(serializers.ModelSerializer):
    class Meta:
        model = Sample
        fields = ('id', 'name', 'value')

このようにエラーメッセージ部分の設定を追加します。

from rest_framework import serializers
from .models import Sample

class SampleSerializer(serializers.ModelSerializer):
    class Meta:
        model = Sample
        fields = ('id', 'name', 'value')
        # ここから追加部分
        extra_kwargs = {
            "name": {"error_messages": {"required": "必須エラー", "null": "nullエラー"}},
            "value": {"error_messages": {"required": "必須エラー"}}}

これで name フィールドに対して、必須エラーと null エラー、 value フィールドに対して必須エラーのメッセージをカスタマイズすることができます。

最後に

モデルでのエラーメッセージだけだと Serializer 側で状況に応じたエラーを出したい場合に、メッセージの内容がおかしくなるケースもあると思いますが、 Serializer クラスでエラーメッセージをカスタマイズすることができれば、より詳細に状況に合わせたメッセージを表示することができるようになるので、小技として今回のエラーメッセージのカスタマイズ方法は押さえておきたいですね。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です