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

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クラスでエラーメッセージをカスタマイズすることができれば、より詳細に状況に合わせたメッセージを表示することができるようになるので、小技として今回のエラーメッセージのカスタマイズ方法は押さえておきたいですね。

コメントする

メールアドレスが公開されることはありません。