Django Treebeard
class Category(models.Model):
parent = models.ForeignKey('self', blank=True, null=True, related_name='children')
name = models.CharField(max_length=255)categories = Category.objects.get_descendants(root_category)
ancestors = Category.objects.get_ancestors(leaf_category)categories = Category.objects.order_by('mptt_level')max_depth = Category.objects.aggregate(Max('mptt_level'))['mptt_level__max']for node in Category.objects.walk():
print(node.name)siblings = Category.objects.get_siblings(category)cousins = Category.objects.get_cousins(category)