Except DRF doesn’t call clean() anymore (as of 3.0?), so you have to reimplement all your validation logic in your serializers anyway. Always seemed like a huge mistake to me for a framework that’s supposed to feel like a natural extension of Django.