Tworzenie drzewa obiektów

Tworzenie drzewa obiektów
misio_
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 61
0

Dzień dobry.

Mam taki dylemat i związany z nim problem:
Mam tabelkę z rekordami, które w niektórych przypadkach mają swoich rodziców w tej samej tabeli. Np:

id patent_id name dane dodatkowe_
1 null kategoria1 jakieś dane do pominięcia
2 1 kategoria2 jakieś dane do pominięcia
3 1 kategoria3 jakieś dane do pominięcia
4 3 kategoria4 jakieś dane do pominięcia

Chcę złożyć tą tabelę, do jednego obiektu, jednak nie chcę ładować całej zawartości, jako, że tabela jest duża (tj. ma wiele pól i łączeń wiele do wielu itp.)
Chcę załadować tylko id i name oraz zachować strukturę drzewa, tak bym mógł je elegancko wyświetlić w widoku bez niepotrzebnej szarpaniny.

Proszę o wskazówkę, jak tego dokonać. Dzięki! 😀

PS. dodam, że trochę uprościłem problem.
W przyczywistości pole name jest w innej tabelce, Stworzyłem zapytanie:

Kopiuj
gr = GR.objects.raw("SELECT gr.id, gr.parent_id, desc.text FROM `gr` JOIN desc ON desc.id = gr.desc_id;")

Nie wiem, jak wstrzyknąć nazwy (text) do obiektu GR

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
0

Co to jest za obiekt, GR?

SB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
1

Cześć!

Miałem podobny problem, kiedy pracowałem nad projektem z wieloma zagnieżdżonymi kategoriami. Wydaje się, że kluczowe jest podejście, które minimalizuje liczbę zapytań do bazy danych i jednocześnie buduje strukturę drzewa w pamięci. Zastanawiałeś się nad wykorzystaniem rekurencyjnego CTE (Common Table Expression) w SQL? To może pomóc w iteracyjnym budowaniu drzewa w jednym zapytaniu. Co do wstrzykiwania nazw, możesz pobrać teksty w jednym zapytaniu, a następnie zbudować obiekt GR w Pythonie, dopasowując nazwy po id. Ważne, żeby zrobić to efektywnie, żeby nie przeciążyć pamięci.
Jeśli potrzebujesz bardziej szczegółowej porady, mogę podrzucić przykładowy kod!

RS
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
0

Miałem ten sam problem, ale go nie rozwiązałem.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.