django-orm-query-optimization
Installation
SKILL.md
Django ORM Query Optimization
Use this skill for query-count and object-loading problems. The usual target is an N+1 pattern where each rendered row or serialized object triggers more database work.
Workflow
-
Prove the query pattern.
- Capture query count and duplicate SQL for the slow path.
- Identify the loop, serializer field, template access, admin display, or model property triggering related queries.
-
Choose the loading strategy.
- Use
select_related()for single-valued relationships:ForeignKeyandOneToOneField. - Use
prefetch_related()for many-valued relationships: reverse FK and many-to-many. - Use
Prefetch()when the related queryset needs filters, ordering, annotations, or nestedselect_related(). - Use
values()orvalues_list()when model instances are unnecessary. - Use
only()ordefer()only when large columns are truly unused.
- Use