Model, migrate, refresh, and verify PostgreSQL materialized views in Django for expensive report or dashboard queries that can tolerate stale data. Use when ORM/index/query rewrites are not enough, the result is read often, freshness can be bounded, and a Django app needs unmanaged models, RunSQL migrations, refresh commands, or concurrent refresh.
Scanned 9/12/2026
Install to Claude Code
npx -y skills add thedixitjain/the-mega-skill-library --skill django-materialized-views --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Django Materialized Views?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/thedixitjain-django-materialized-views)More formats (shields.io, HTML) on the badges page.
---
name: django-materialized-views
description: "Model, migrate, refresh, and verify PostgreSQL materialized views in Django for expensive report or dashboard queries that can tolerate stale data. Use when ORM/index/query rewrites are not enough, the result is read often, freshness can be bounded, and a Django app needs unmanaged models, RunSQL migrations, refresh commands, or concurrent refresh."
category: backend-and-data
source_repo: hashgraph-online/awesome-codex-plugins
source_path: "plugins/LVTD-LLC/skills/skills/django-materialized-views/SKILL.md"
source_url: https://github.com/hashgraph-online/awesome-codex-plugins/blob/HEAD/plugins/LVTD-LLC/skills/skills/django-materialized-views/SKILL.md
---
# Django Materialized Views
Use this skill when an expensive read query is reused often and can tolerate controlled staleness. Try query-plan, index, and ORM expression improvements first; materialized views add operational state.
## Workflow
1. Confirm fit.
- The source query is expensive and stable.
- Consumers can accept stale data.
- Refresh cadence, ownership, and failure behavior are clear.
- PostgreSQL is the target database.
2. Design the materialized view.
- Define the SQL query and output columns.
- Add a unique column or unique column set if concurrent refresh is required.
- Add indexes for consumer queries against the view.
3. Integrate with Django.
- Create the view with `RunSQL`.
- Represent it as an unmanaged model with `managed = False`.
- Keep the unmanaged model fields aligned with the SQL output.
- Make writes impossible at the application boundary.
4. Implement refresh.
- Use `REFRESH MATERIALIZED VIEW` for simple refreshes.
- Use `REFRESH MATERIALIZED VIEW CONCURRENTLY` only when the view is already populated and has a qualifying unique index.
- Schedule refresh through a management command, task queue, or database job.
See [materialized-view-patterns.md](references/materialized-view-patterns.md) for migration, model, and refresh templates.
## Safety Notes
- A materialized view returns stored data; it is not automatically current.
- Concurrent refresh avoids locking out reads but has prerequisites and still allows only one refresh at a time per view.
- Refreshing a large view can be a major database workload. Measure it separately from reads.
## Verification
Validate the SQL against source tables, test the unmanaged model reads, prove refresh behavior, and measure read latency before/after.
---
**Source:** [`hashgraph-online/awesome-codex-plugins`](https://github.com/hashgraph-online/awesome-codex-plugins) → `plugins/LVTD-LLC/skills/skills/django-materialized-views/SKILL.md`

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!