DetailViewActionMixin¶
DetailViewActionMixin
¶
djadmin.actions.view_mixins.DetailViewActionMixin
Mixin for actions that use DetailView (read-only display).
Use for actions that display model instances in read-only mode using the Layout API for structured display.
The action can define a view_layout attribute on the ModelAdmin, or it will fall back to update_layout, layout, or auto-generate layout from model fields.
Examples
class ViewRecordAction(RecordActionMixin, DetailViewActionMixin, BaseAction): pass
In ModelAdmin:¶
class ProductAdmin(ModelAdmin): view_layout = Layout( Fieldset('Details', Field('name'), Field('price'), ), )
Method Resolution Order
djadmin.actions.view_mixins.DetailViewActionMixin
Attributes
| Attribute | Value | Defined in |
|---|---|---|
base_class |
django.views.generic.detail.DetailView |
djadmin.actions.view_mixins.DetailViewActionMixin
|
Methods
get_context_data(self, **kwargs)
Defined in:
<class 'djadmin.actions.view_mixins.DetailViewActionMixin'>
Add layout_items to context for template rendering.
Returns: Context dict with layout_items
Source code
in view_mixins.py
line 332
def get_context_data(self, **kwargs):
"""
Add layout_items to context for template rendering.
Returns:
Context dict with layout_items
"""
context = super().get_context_data(**kwargs)
# Get layout
layout = self.get_layout()
if layout:
# Render layout for display
obj = self.get_object()
layout_items = layout.render_for_display(obj)
context['layout_items'] = layout_items
return context
get_layout(self)
Defined in:
<class 'djadmin.actions.view_mixins.DetailViewActionMixin'>
Get layout for display.
Fallback order: 1. view_layout (action-specific) 2. update_layout (shares with edit view) 3. layout (generic) 4. Auto-generate from model fields
Returns: Layout instance or None
Source code
in view_mixins.py
line 281
def get_layout(self):
"""
Get layout for display.
Fallback order:
1. view_layout (action-specific)
2. update_layout (shares with edit view)
3. layout (generic)
4. Auto-generate from model fields
Returns:
Layout instance or None
"""
# Try view_layout first (most specific)
layout = getattr(self.model_admin, 'view_layout', None)
if layout:
return layout
# Fallback to update_layout (share with edit view)
layout = getattr(self.model_admin, 'update_layout', None)
if layout:
return layout
# Fallback to generic layout
layout = getattr(self.model_admin, 'layout', None)
if layout:
return layout
# No layout defined - auto-generate from model fields
return None
Fields
| Field | Type | Related To |
|---|---|---|
__dict__ |
getset_descriptor |
- |
__weakref__ |
getset_descriptor |
- |