
Should you use a Service Layer in Django, or just Custom QuerySets?
I've been reading two blog posts lately:
- [Against service layers in Django](https://www.b-list.org/weblog/2020/mar/16/no-service/) by James Bennett
- [Evolution of a Django Repository pattern](https://lukeplant.me.uk/blog/posts/evolution-of-a-django-repository-pattern/) by Luke Plant
Both argue that building a service/repository layer in Django is basically just reinventing QuerySet — poorly. Their suggestion: use Custom Managers and QuerySets instead, keep logic in model methods.
But I see a lot of Django projects (and even style guides like HackSoft's) that still recommend a service layer.
So what's your take?
- Do you use a service layer in your Django projects?
- Has it helped or caused pain over time?
- Or do you go with Custom QuerySets and model methods?