API Reference¶
Complete API reference for django-admin-deux.
Core APIs¶
ModelAdmin¶
The central configuration class for managing models in the admin interface.
Key topics: - ListView configuration (list_display, actions, pagination) - Form configuration (form_class, fields, create/update variants) - Feature indicators (search_fields, list_filter, ordering) - Form/fields resolution logic
from djadmin import ModelAdmin, Column
@register(Product)
class ProductAdmin(ModelAdmin):
list_display = [
Column('name'),
Column('sku', label='SKU Code'),
Column('price', empty_value='N/A'),
]
general_actions = [ListAction, AddAction]
bulk_actions = [DeleteBulkAction]
record_actions = [EditAction, DeleteAction]
AdminSite¶
Manages model registration, URL routing, and provides the admin interface container.
Key topics: - Registration methods (register, unregister, is_registered) - URL generation and namespacing - Site configuration (site_header, site_title) - Multiple admin sites support
from djadmin import AdminSite
site = AdminSite(name='admin')
site.register(Product, ProductAdmin)
# In urls.py
urlpatterns = [
path('admin/', include(site.urls)),
]
Actions¶
Flexible, composable system for creating operations on models.
Key topics: - BaseAction and core attributes - Action type mixins (List, Bulk, Record) - View type mixins (FormView, CreateView, UpdateView, etc.) - Action composition pattern - Common action methods
from djadmin.actions import BaseAction, BulkActionMixin
from djadmin.actions.view_mixins import FormViewActionMixin
class ChangeStatusAction(BulkActionMixin, FormViewActionMixin, BaseAction):
label = 'Change Status'
icon = 'edit'
def get_form_class(self):
return StatusForm
Mixins¶
View mixins that provide standard functionality to all admin views.
Key topics: - DjAdminViewMixin (automatically applied to all views) - Context data (model, opts, admin_site, breadcrumbs, assets) - Breadcrumb generation - Plugin integration hooks - Using in custom views
from djadmin.plugins.core.mixins import DjAdminViewMixin
class CustomView(DjAdminViewMixin, TemplateView):
template_name = 'custom.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
# Standard admin context already available
context['custom_data'] = get_data()
return context
Column¶
Dataclass for enhanced list_display column configuration.
Key topics: - Column attributes (field, label, empty_value, classes) - Django admin compatibility - Usage with callables - Template rendering
from djadmin import Column
list_display = [
Column('name'),
Column('sku', label='SKU Code', classes='font-mono'),
Column('price', empty_value='N/A', classes='text-right'),
Column(custom_method, label='Status', classes='badge'),
]
Quick Reference¶
Common Imports¶
# Core classes
from djadmin import AdminSite, ModelAdmin, register, Column
# Actions
from djadmin.actions import (
BaseAction,
GeneralActionMixin,
BulkActionMixin,
RecordActionMixin,
)
# View type mixins
from djadmin.actions.view_mixins import (
FormViewActionMixin,
CreateViewActionMixin,
UpdateViewActionMixin,
ListActionMixin,
TemplateViewActionMixin,
DeleteViewActionMixin,
BulkDeleteViewActionMixin,
RedirectViewActionMixin,
)
# Mixins
from djadmin.plugins.core.mixins import DjAdminViewMixin
# Default site
from djadmin import site
Basic ModelAdmin¶
from djadmin import ModelAdmin, register, Column
@register(MyModel)
class MyModelAdmin(ModelAdmin):
# List view
list_display = [
Column('field1'),
Column('field2', label='Custom Label'),
]
paginate_by = 50
# Actions
general_actions = [ListAction, AddAction]
bulk_actions = [DeleteBulkAction]
record_actions = [EditAction, DeleteAction]
# Forms
form_class = MyForm
create_fields = ['field1', 'field2']
update_fields = ['field1', 'field2', 'field3']
Custom Action Pattern¶
from djadmin.actions import BaseAction, [ActionType]Mixin
from djadmin.actions.view_mixins import [ViewType]ActionMixin
class MyAction([ActionType]Mixin, [ViewType]ActionMixin, BaseAction):
label = 'My Action'
icon = 'icon-name'
css_class = 'primary'
def get_template_name(self):
return 'myapp/my_action.html'
# Implement action-specific methods as needed
URL Patterns¶
from django.urls import path, include
from djadmin import site
urlpatterns = [
path('admin/', include(site.urls)),
]
# URL names:
# - admin:index (dashboard)
# - admin:app_label_app_index (app dashboard)
# - admin:app_model_list (list view)
# - admin:app_model_add (create view)
# - admin:app_model_edit (update view)
API Organization¶
By Use Case¶
Configuring model administration: - ModelAdmin - Main configuration class - Column - List display configuration
Managing the admin site: - AdminSite - Site-level configuration
Creating custom functionality: - Actions - Custom operations - Mixins - View enhancements
By Component¶
Models & Registration: - AdminSite.register() - ModelAdmin - @register decorator
Views & URLs: - AdminSite.urls - Action URL patterns - DjAdminViewMixin
List Display: - ModelAdmin.list_display - Column
Actions: - ModelAdmin actions - BaseAction - Action type mixins - View type mixins
Forms: - ModelAdmin form configuration - Form/fields resolution
See Also¶
- Getting Started Guide - Introduction and quick start
- User Guide - How-to guides and tutorials
- Architecture - System design and concepts
- Plugin Development - Creating plugins