Хранение иерархических (родительских/дочерних) данных в Python/Django: альтернатива MPTT?

Я ищу хороший способ сохранить и использовать иерархические (родительские/дочерние) данные в Django. Я использовал django-mptt, но это кажется совершенно несовместимым с моим мозгом - я оказываюсь с неочевидными ошибками в неочевидных местах, главным образом при перемещении вещей в дереве: Я заканчиваю с непоследовательным состоянием, где узел и его родитель не согласятся относительно их отношений.

Мои потребности просты:

  • Учитывая узел:
    • найдите его корень
    • найдите его предков
    • найдите его потомков
  • С деревом:
    • легко переместите узлы (т.е. родитель изменения)

Мои деревья будут небольшими (в большинстве 10k узлов более чем 20 уровней, обычно очень намного меньшими, скажут 10 узлов с 1 или 2 уровнями).

Я должен думать, что должен быть более легкий способ сделать деревья в python/django. Есть ли другие подходы, которые делают лучшее задание поддержания непротиворечивости?

5
задан Parand 23 April 2010 в 15:45
поделиться

1 ответ

django-treebeard - еще один вариант. У него отличная документация. Я считаю, что он отвечает всем указанным выше требованиям и включает в себя некоторые функции для проверки дерева на наличие проблем и исправления этих проблем в дереве.

Node.find_problems () https://tabo.pe/projects/django-treebeard/docs/1.60/api.html#treebeard.models.Node.find_problems

Node.fix_tree () https://tabo.pe/projects/django-treebeard/docs/1.60/api.html#treebeard.models.Node.fix_tree

3
ответ дан 15 December 2019 в 06:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: