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')