Live demo: django-icv-tree
The package index, as the tree it actually is
django-icv-tree stores hierarchies as materialised paths: every node knows its full ancestry in one indexed column. Below is the real ICV capability hierarchy, not sample data: expand a category, follow the breadcrumb, list every descendant of any node.
Capability tree (root: ICV OSS)
Click a name to select it. Click the triangle to expand or collapse its children.
Ancestors of django-waf
get_ancestors(include_self=True), one query
Descendants of “django-waf”
django-waf is a leaf (is_leaf() = true). No descendants to list; this is the correct, expected result for a package node, not a failed query.
path column is a prefix-indexed string (e.g. 0001/0002/0001). Ancestors and descendants are WHERE path LIKE prefix lookups, not recursive CTEs or nested-set left/right rebalancing on every write.
Same-host stays relative, cross-host goes absolute
Both links below are built the same way, a plain url template tag with no host handling. hostmap decides, per call, whether the result stays relative or becomes absolute.
Other live demos
django-hostmap
Host-based URL routing and host-aware reversing.
django-icv-tree (you are here)
Materialised path tree structures.
django-icv-taxonomy
Cross-domain taxonomy, vocabularies, and tagging.
django-icv-search
Pluggable search engine integration.
django-icv-sitemaps
Scalable sitemap and discovery file generation.
django-brickwork
A brand-agnostic UI substrate: shell, nav, components.