Правильная проверка в Rest Api Django

#python #django #validation #django-rest-framework #django-serializer

#python #django #проверка #django-rest-framework #django-сериализатор

Вопрос:

У меня есть этот код в моем serializers.py :

 from rest_framework import serializers
from .models import OnlineMeeting


def valid_name(dob):
    if dob.isalpha() is False:
        raise serializers.ValidationError("Name and surname must contain only letters")
    return dob


class MeetingsListSerializer(serializers.ModelSerializer):
    class Meta:
        model = OnlineMeeting
        fields = '__all__'


class OnlineMeetingDetailSerializer(serializers.ModelSerializer):

    start_time = serializers.TimeField()
    end_time = serializers.TimeField()
    owner_first_name = serializers.CharField(validators=[valid_name])
    owner_last_name = serializers.CharField(validators=[valid_name])
    participant_first_name = serializers.CharField(validators=[valid_name])
    participant_last_name = serializers.CharField(validators=[valid_name])

    def validate(self, data):
        if data['start_time'] > data['end_time']:
            raise serializers.ValidationError("finish must occur after start")
        return data

    class Meta:
        model = OnlineMeeting
        fields = '__all__'
  

Я не наследую OnlineMeetingDetailSerializer от serializers.Serializer того, что используется для реализации вашей собственной проверки, это плохо? Могу ли я также написать проверку в классах, которые наследуют serializers.ModelSerializer ?

Комментарии:

1. 🙂 может быть, вам следует прочитать документы django-rest-framework.org/api-guide/serializers/… «Класс ModelSerializer такой же, как и обычный класс сериализатора, за исключением того, что: …»

2. Я читал документы, но я не знаю, можно ли написать дополнительную проверку в таком классе, который наследует serializers.ModelSerializer

3. «Я прочитал документы» не лги мне xD django-rest-framework.org/api-guide/serializers / … не стесняйтесь изменять его, как вы бы сделали с простым Serializer