Szukam dobry sposób przechowywania i używania danych hierarchicznych (nadrzędny/podrzędny) w Django. Używałem django-mptt, ale wydaje mi się, że jest to całkowicie niezgodne z moim mózgiem - kończę na nieoczywistych błędach w nieoczywistych miejscach, głównie podczas przenoszenia rzeczy w drzewie: kończę w niespójnym stanie, gdzie węzeł i jego rodzic nie będzie się zgadzał co do ich związku.Przechowywanie danych hierarchicznych (macierzystych/potomnych) w Pythonie/Django: Alternatywa MPTT?
Moje potrzeby są proste:
- Biorąc węzeł:
- znaleźć jego korzeń
- znaleźć jego przodkowie
- znaleźć jego potomkowie
- z drzewa:
- łatwo przenosić węzły (np. Zmiana rodzic)
Kim drzewa będzie Niewielkie (najwyżej 10k węzły na poziomy 20, na ogół o wiele mniejszy, powiedzmy 10 węzły 1 lub 2 poziomy).
Muszę myśleć, że musi istnieć łatwiejszy sposób robienia drzew w python/django. Czy istnieją inne podejścia, które lepiej radzą sobie z utrzymaniem spójności?
django-mptt jest świetny - wystarczy przeczytać kilka odpowiedzi Daniel Roseman tu (http://stackoverflow.com/questions/2324727/re-ordering-child-nodes- in-django-mptt/2326625 # 2326625) w celu uzyskania pomocy przy przenoszeniu węzłów. Nie poddawaj się! –
Dzięki, że wygląda to na prawdopodobną przyczynę moich problemów, ale nie ufam sobie, że za każdym razem otrzymam to prawo - wydaje się zbyt łatwe do przeoczenia. Powtórzę twój komentarz: "Wciąż trochę zdenerwowany przez MPTT i możliwość, że drzewo dostanie się w zły stan" :-) Rozumiem, że skończyło się to szczęśliwym? – Parand