0
0

More than 1 year has passed since last update.

Django serializer エラーメッセージのカスタマイズ方法

Last updated at Posted at 2023-05-09

Django serializer エラーメッセージのカスタマイズ方法

serializer.py
from rest_framework import serializers
from rest_framework.validators import UniqueValidator
from django.core.validators import EmailValidator
from models.users import Users

# serializers.ModelSerializerを継承する
class Serial(serializers.ModelSerializer):
    # UniqueValidatorでUsersモデルに登録したいemailがすでに登録されたかをシリアライズする
    # EmailValidatorでemailのフォーマットをシリアライズする
    email = serializers.EmailField(validators=[UniqueValidator(queryset=Users.objects.all(), message="emailはすでに登録されました"),
                                               EmailValidator(message="フォーマットが違います")])
    
    # Usersモデルにないフィールドのシリアライズ
    password = serializers.CharField(min_length=5, required=True, allow_blank=False,
                    error_messages={'min_length':"passwordは短いすぎます。","blank": "パスワードは必須です。", "required":"パスワードは必須です。"})
    # class MetaでUsersモデルにあるフィールドをシリアライズできる
    class Meta:
        model = Users
        # シリアライズしたいフィールドを全部fieldsに追加する
        fields = ['name', 'email', 'password']
        # max_length error & not null(required&blank) error, override extra_kwargs
        extra_kwargs = {
            "name": {"error_messages":
                            {"max_length": I0101,"required": I0105, 'blank': I0105}},
            # UniqueValidatorやEmailValidatorはclass Metaでカスタマイズできないため、上記通りにserializers.EmailFieldで新しいシリアライザを作る必要がある
            "email": {"error_messages":
                             {"max_length": "passwordは長すぎます。", "required": "emailは必須です。", 'blank': "emailは必須です。"}},
            }

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0