This is a general architecture question. I read in many places that in an MVC framework, (1) models ought to be fat, and controllers ought to be skinny. But I also read th
My biggest problem with Django is that they seem to break the MVC pattern by adding the Forms layer. Most of the documentation induces you to place validation logic in the forms, and the fact that model validators are only called by form saves only reinforces this convention. But it is a bad convention in my opinion because, after all, too often what is being validated is data that will be converted to a model.
The best example of how this is bad is if you think about converting a traditional Django project to a API-centered project with Django Rest Framework and a separate front-end client that just consumes this API. Instead of just leaving your models intact and preserving a lot of business logic, you'll have to go trough your forms and move all the logic to serializers (unfortunately, Django Rest Framework also follows Django's broken MVC pattern and adds an extra "serializer" layer).
I think the fat models approach is the way to go. More information about how to implement it in Django here.