これは私の serializers.py です (組み込みの User モデルのシリアライザーを作成したい):
from rest_framework import serializers
from django.contrib.auth.models import User
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username', 'password', 'email', )
Django Rest Framework には独自のフィールド バリデータがあることを認識しています。既に存在するユーザー名を使用してユーザーを作成しようとすると、次のエラーが発生するためです。
{'username': [u'This field must be unique.']}
エラー メッセージをカスタマイズして、「このフィールドは一意である必要があります」ではなく、「このユーザー名は既に使用されています。もう一度お試しください」と表示するようにしたいと考えています。
また、組み込みの正規表現バリデーターもあります。これは、感嘆符を使用してユーザー名を作成すると、次のように表示されるためです。
{'username': [u'Enter a valid username. This value may contain only letters, numbers and @/./+/-/_ characters.']}
「無効なユーザー名」とだけ表示されるように、正規表現バリデーターをカスタマイズしたいと考えています。
各フィールドのすべてのエラー メッセージをカスタマイズするにはどうすればよいですか?
注: この投稿によると: Django Rest Framework シリアライザーのカスタム エラー メッセージ:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
def __init__(self, *args, **kwargs):
super(UserSerializer, self).__init__(*args, **kwargs)
self.fields['username'].error_messages['required'] = u'My custom required msg'
しかし、'unique' および 'regex' バリデーターに対してはどうすればよいでしょうか? やってみた
self.fields['username'].error_messages['regex'] = u'My custom required msg'
と
self.fields['username'].error_messages['validators'] = u'My custom required msg'
しかし、どちらも機能しませんでした。