django-admirarchy documentation¶
https://github.com/idlesign/django-admirarchy
Description¶
Django Admin addon to navigate through hierarchies.
Have you ever wanted Django Admin to be able to navigate through hierarchies?
Without existing models modifications? Yeah!
Admirarchy does it in an old-school way, just like Norton Commander and Co - one level at a time.
Hierarchies described as adjacency lists and nested sets are supported.
Requirements¶
- Python 3.6+
- Django 1.8+
- Django Admin contrib
Table of Contents¶
Quickstart¶
Note
Make sure admirarchy
is listed in INSTALLED_APPS in settings file of your project (usually ‘settings.py’).
With a few minor changes…
# admin.py of your application
from django.contrib import admin
from admirarchy.toolbox import HierarchicalModelAdmin
from .models import MyModel # Let's say this model represents a hierarchy.
# Inherit from HierarchicalModelAdmin instead of admin.ModelAdmin
@admin.register(MyModel)
class MyModelAdmin(HierarchicalModelAdmin):
hierarchy = True # This enables hierarchy handling.
# and other code as usual...
…your admin…

…turns into something similar to this:

Advanced usage¶
Here are some words on more advanced admirarchy
usage.
Adjacency lists¶
For hierarchies described through adjacency lists you can explicitly define a name
of a field in your model containing parent item identifier (defaults to parent
):
from django.contrib import admin
from admirarchy.toolbox import HierarchicalModelAdmin, AdjacencyList
from .models import MyModel
@admin.register(MyModel)
class MyModelAdmin(HierarchicalModelAdmin):
hierarchy = AdjacencyList('upper') # That says MyModel uses `upper` field to store parent ID.
Nested sets¶
For hierarchies described through nested sets you can explicitly define names
of fields containing left and right set limits, and nesting level (defaults to lft
, rgt
and level
respectively):
from django.contrib import admin
from admirarchy.toolbox import HierarchicalModelAdmin, NestedSet
from .models import MyModel
@admin.register(MyModel)
class MyModelAdmin(HierarchicalModelAdmin):
# That says MyModel uses has 'left_border', 'right_border', 'depth' to describe nesting.
hierarchy = NestedSet('left_border', 'right_border', 'depth')