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