This is a topic that has been discussed here in the past, you might want to search for some of the other threads discussing issues like this. (I’ve included some links at the bottom to help you get started.)
I’m going to share the contrary view to the prior response.
- Models: “Fat models” for methods working with single instances of that model.
- Managers: Methods working with multiple instances of a model and directly-related data.
- Views: All business logic starts in views, and remains there until an identified “re-use” opportunity arises. At that point the logic is refactored into a separate function - which remains in the
views.pyfile until the file gets “too big”.
What constitutes “too big”? Our empirical evidence has shown that code files tend to become unmanageable at about 2500 lines. So we start looking to refactor when they go above 2000.
What we don’t do is unnecessarily proliferate the number of files. We never start from the idea of “let’s create 10 100-line files just in case they grow”.
A couple other threads on this topic: