Обычно к себе добавляется внешний ключ :
class Item(models.Model):
parent = models.ForeignKey('self')
Вы можете указать связанное имя как таковое:
class Item(models.Model):
parent = models.ForeignKey('self', related_name='children')
Поскольку у элемента может не быть родителя, не забудьте null = True и пусто = True как таковой:
class Item(models.Model):
parent = models.ForeignKey('self', related_name='children', null=True, blank=True)
Тогда вы сможете запросить дочерние элементы следующим образом:
item.children
Вы также можете использовать django-mptt и воспользоваться некоторыми возможностями оптимизации и дополнительными функциями дерева:
from mptt.models import MPTTModel, TreeForeignKey
class Item(MPTTModel):
parent = TreeForeignKey('self', null=True, blank=True, related_name='children')