Home
Advanced CRUD for perfectionists with deadlines. An opinionated Django package for shipping production-grade CRUD screens with filtering, bulk operations, inline editing, and async workflows.
PowerCRUD extends Neapolitan’s view layer with the practical infrastructure needed for real operational interfaces.
Project status
PowerCRUD is still evolving, but now ships with a full pytest suite (including Playwright smoke tests). Expect breaking changes while APIs settle, and pin the package if you rely on current behaviour.
Where to start
-
First view online
- Getting Started for installation and base template requirements.
- Setup & Core CRUD basics for filters, pagination, and modals.
-
Improve day-to-day editing
- Inline editing to adjust rows in place.
- Forms for generated vs custom forms, contextual display fields, disabled inputs, and parent/child dropdown queryset scoping.
- Bulk editing (synchronous) for multi-record updates with validation controls.
- Persistence Hooks for Real Write Logic for moving validated writes into app services without scattering save logic.
-
Handle long-running work
- Async Manager explains locks, progress storage, and reusable helpers.
- Bulk editing (async) queues jobs through django-q2.
- Async Bulk Persistence Without Surprises shows how to keep sync and async bulk update behavior aligned.
- Async dashboard add-on persists lifecycle data.
-
Tune styling and behaviour
- Styling & Tailwind covers framework options and safelists.
- Customisation tips shows template overrides, extra actions, and mixin hooks.
- Advanced Guides collects deeper implementation walkthroughs for trickier extension patterns.
What ships in the box
- Enhanced CRUD views with property support, field exclusions, and customizable display options
- Modal-based create, edit, and delete forms with HTMX integration
- Inline row editing with HTMX-powered reactive updates and conflict detection
- Sortable tables with pagination and responsive column controls
- Reactive filtering and search with M2M logic and custom queryset handling
- Bulk edit and delete operations with atomic transactions and async processing
- Async task management with progress tracking, conflict locks, and lifecycle monitoring
- daisyUI/Tailwind styling with template flexibility and framework extension points
- Crispy forms integration and HTML5 widgets
- Management commands for template bootstrapping and asset utilities
- Comprehensive sample app and Docker development setup
Async in brief
- View reserves locks and enqueues a worker.
- Worker runs via django-q2, updates progress, and returns results.
- Completion hook clears locks, emits lifecycle events, and optionally records dashboard rows.
- Cleanup command or schedule reconciles anything stuck.
See Async architecture for details.
Reference map
- Configuration reference: config_options.md
- Hooks reference: hooks.md
- Complete class example: complete_example.md
- Tooling: dockerised_dev.md, mgmt_commands.md, testing.md
- Sample app overview: sample_app.md
- Planned enhancements: enhancements.md
PowerCRUD is still moving; pin releases if you rely on specific behaviour and check these guides when upgrading.