Я ищу хороший способ сохранить и использовать иерархические (родительские/дочерние) данные в Django. Я использовал django-mptt, но это кажется совершенно несовместимым с моим мозгом - я оказываюсь с неочевидными ошибками в неочевидных местах, главным образом при перемещении вещей в дереве: Я заканчиваю с непоследовательным состоянием, где узел и его родитель не согласятся относительно их отношений.
Мои потребности просты:
Мои деревья будут небольшими (в большинстве 10k узлов более чем 20 уровней, обычно очень намного меньшими, скажут 10 узлов с 1 или 2 уровнями).
Я должен думать, что должен быть более легкий способ сделать деревья в python/django. Есть ли другие подходы, которые делают лучшее задание поддержания непротиворечивости?
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