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