Thank you for explaining this. I think Django’s interpretation of MVC pattern is quite confusing.
When I started using Django a few years ago it was hard for me to figure out why some business logic is handled in models, some in model managers, some in views and some in view forms. After going through lots of pains of decoupling code I was working with, I came to the conclusion that my confusion stemmed from mostly naming conventions and how authors and others on blogs chose to use django.
Currently I recommend putting the bulk of logic into model managers and an additional layer of controllers on top. Removing it out of views allows for loose coupling in complex applications where displaying a template driven page is only one way show data.
