Ваше подозрение верно, поля, которых нет в документе, не проверяются полностью. И __validate_required_fields
не предназначен для переопределения (изменение имени не удастся из-за двух ведущих __
).
Это не так, как в 1.
Лучше всего это можно сделать, переопределив метод validate
и обработав различные (!) Контейнеры ошибок.
Я думаю, что самым простым решением было бы проверять по двум разным схемам: одна проверяет жестко , а вторая, от которой вы получаете предупреждения.