Best Practices for Structuring Django Projects as They Grow?

Hi everyone

I’ve been working with Django for a while now, mostly on small to mid-sized projects, and recently I’ve started noticing how quickly things can get messy as the project scales.

At the beginning, everything feels simple a few apps, basic models, and straightforward views. But as features grow, I find myself questioning things like:

  • How to properly structure apps (when to split vs keep things together)

  • Organizing business logic (services, managers, utils what works best?)

  • Avoiding “fat models” or overly complex views

  • Keeping the project maintainable for future contributors

I’ve seen different approaches in the community, and even browsing recent discussions on the forum shows how varied practices can be, especially around ORM usage, architecture decisions, and scaling strategies .

So I wanted to ask:

What patterns or structures have worked best for you in larger Django projects?
Do you follow a specific architecture (like service layer, clean architecture, etc.)?
Any mistakes you made early on that you’d avoid now?

I’d really appreciate hearing real-world experiences rather than just theoretical advice.

Thanks in advance!

This is a topic that has been well-covered here.

Some threads to get you started (with further references) include:

If you follow through to all the threads they reference, and then to their references (and so on), you’ll get a pretty comprehesive view of what people are doing. (Most all of them do talk about people’s actual implementation and not just theoretical advice.)

I’m working on an app now and chose to follow the patterns in this article: How to structure Django projects | James Beith

It’s quite a departure from the Django norms, and I guess a lot of Django devs wouldn’t like this, but I’ve found that it fits my use-case perfectly.