Usage#

Lets assume that our model looks like this.

models.py#
from django import models
from django_ltree import TreeModel

class CustomTree(TreeModel):
    text = models.TextField()

Create a child without parent#

views.py#
from .models import CustomTree

CustomTree.objects.create_child(text='Hello world')

The following code with create a child with no parent (ie:roots of a tree)

Create a child with parent#

Let’s assume we want to add a child to the CustomTree object of pk=1

views.py#
from .models import CustomTree

# This must return a single object
parent: CustomTree = CustomTree.objects.get(pk=1)
CustomTree.objects.create_child(text='Hello world', parent=parent)

Get all the roots of the model#

A root means the the object that childrens anchor to.

views.py#
from .models import CustomTree

roots: list[CustomTree] = CustomTree.objects.roots()

Get all the childrens of a object#

To get the childrens of a object, we can first get the object then call the QuerySet specific children function.

views.py#
from .models import CustomTree

instance = CustomTree.objects.get(pk=1)

childrens: list[CustomTree] = instance.children()

Get the length of childrens of a object#

django specific database functions still work when we call the filter method.

Lets assume we want to get the childrens of CustomTree object whose pk is 1.

views.py#
from .models import CustomTree

instance = CustomTree.objects.get(pk=1)

childrens: int = instance.children().count()