Clean code
2025
Django without the mess: repositories for data, services for rules
Why selectors are a trap for cleaning up fat Django models, and how repositories for data access plus services for business rules keep the layers apart.
Django REST Framework: when (and when not) to override serializers and viewsets, part 2
Part 2 covers ViewSets: when to override create versus perform_create, how update, partial_update, and perform_update fit together, and a cheat sheet for where each kind of logic goes.
Django REST Framework: when (and when not) to override serializers and viewsets, part 1
Part 1 covers serializers: which methods to override for validation, saving, and output formatting, and what logic does not belong in a serializer at all.