чаще всего, валидация данных проходит два этапа
1) Валидация перед сериализацией
Где идут проверки, что поле не None, или что поле может быть сериализовано в ожидаемый тип, например, datetime
Как я уже упомянул, обычно достаточно объявить соответствующие аргументы при объявлении полей
Если этого недостаточно, дополнительно пишут метод validate_имяПоля
2) Комплексная валидация всего объекта данных
В методе validate() можно отвалидировать данные, использую весь дата-объект, а не отдельное поле, вложить какую-нибудь около-бизнес-логику