Features¶
Auto-registration¶
- Registers all concrete models in the selected app(s)
- Skips models whose names contain configured exclusion terms (e.g.
Historical) - Supports explicit apps, multiple apps, or full auto-discovery
Smart changelist defaults¶
list_displaybuilt from model fields, with exclusions fromDEFAULT_EXCLUDED_TERMS- Relation fields are displayed with clickable links via
linkify() - GenericForeignKeys displayed via
linkify_gfk() - Many-to-many fields rendered as comma-separated, linkified items with clipping (see below)
- Common filters auto-added for booleans, datetimes, and chars
- Properties on the model are appended if safe and unique
- Created/updated timestamp fields moved to end
- Optional reordering to ensure the first column is not a linkify field
Performance and UX defaults¶
- Uses
TimeLimitedPaginatorto avoid slow count queries show_full_result_count = Falseto prevent expensive COUNT(*)list_select_related = Trueby default to reduce N+1 queries
Polymorphic model support¶
- Detects
django-polymorphicand uses: PolymorphicParentListAdminfor parent models (with discovered children)PolymorphicChildListAdminfor child models
CSV export action¶
- Built-in
ExportCsvMixinadds an "Export Selected to CSV" action
Runtime customization API¶
- Retrieve the live
ModelAdmininstance for a model and adjust: append_list_display,prepend_list_display,remove_list_displayappend_filter_display,add_search_fieldsupdate_list_select_relatedappend_inlineadd_admin_method(actions and display functions)
See Usage for examples.
Many-to-many handling¶
- Detail view uses Django's default M2M form widget; nothing custom to learn
- Changelist shows M2M fields as a comma-separated list of related objects
- Each item links to the related object's admin change page (when registered)
- Displays up to a configurable limit (default: 10); extra items are clipped with
... - Works with explicit
throughtables; the end objects are shown