Skip to content

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