Ответ 1
Есть две основные проблемы с моделью "full_clean". Первый - технический. Есть несколько случаев, когда full_clean не звонит вообще. Например, вы обойдете его, когда вы выполните queryset.update().
Во-вторых, если у вас сложная бизнес-логика, которая обычно является причиной того, что у вас будет full_clean, вероятно, вы должны сделать валидацию в бизнес-логике, а не перейти к моделям для проверки. Каждый слой должен отвечать за собственную консистенцию, а уровень хранения - то есть модели - не должен заботиться о бизнес-уровне.
Еще одна вещь, о которой я могу думать, это то, что full_clean будет вызван, как только у вас появится модель, которая появляется после того, как сериализатор выполняет свою проверку. В этот момент все начинает становиться беспорядочным, потому что у вас есть двухэтапная проверка с созданием объекта между ними. Если вы используете вложенный сериализатор, вы можете застрять здесь, потому что вы не сможете создавать вложенные модели до того, как будет сохранена основная модель, что сделает весь чистый вызов еще более запутанным - некоторые объекты будут созданы, другие не будут, Трудно понять, когда и какой объект должен быть проверен с помощью full_clean, и вы можете быть уверены, что у пользователей будет много жалоб, когда они переопределяют обновление/очистку и выясняют, что full_clean не был вызван все модели. Это начало становиться полной головной болью, и мы предпочитаем держать вещи проще и более явными.