Я хотел бы получить узел root дерева в модели ниже:
# models.py
class Note(models.Model):
note_id = models.AutoField(primary_key=True)
title = models.CharField(max_length=100)
parent_note = models.ForeignKey('self', on_delete=models.SET_NULL,
null=True, related_name='subnotes')
Note_1
Note_2
Note_3
Note_4
Итак, если выбрать, например, Note 3, я хотел бы получить Note 1 следующим образом:
n3 = Note.objects.get(pk=3)
n3.get_root()
результат должен быть:
<QuerySet [<Note: Note_1>]>
Код ниже возвращает все родительские узлы данного узла.
Мне нужно только root (наивысший)
# models.py
...
def get_parents(self):
if self.parent_note is None:
return Note.objects.none()
return Note.objects.filter(pk=self.parent_note.pk) |
self.parent_note.get_parents()