Wyobraźmy sobie następujący model:Lewa zewnętrzna ścieżka zwrotna select_related w Django?
class Parent(Model):
...
class Child(Model)
father = ForeignKey(Parent)
...
Niektórzy rodzice mają dzieci, inne nie (nie są rodzice w prawdziwym znaczeniu, to tylko fikcyjna nazwa).
Chciałbym wprowadzić następujące zapytanie: Chcę listy wszystkich rodziców,, a jeśli mają dzieci, mi przynieść dzieciom zbyt. To byłoby równoznaczne z lewego sprzężenia zewnętrznego do tabeli podrzędnej, czyli:
select * from app_parent left join app_child on child_father_id=parent_id
ten sposób, gdy przywołuję Parent.child_set w moim szablonu, nie trafi baza danych gazillion razy. Czy jest jakiś sposób na zrobienie tego? Dzięki
Uznałem, że nie powinienem stosować tego podejścia; naprawdę nie ma wsparcia. Wydaje się, że najlepszym sposobem jest wybranie z najbardziej dziecinnej tabeli, a następnie, w razie potrzeby, użycie funkcji "przegrupuj" templatetag lub funkcji set() w polach macierzystych, w zależności od przypadku. –
Wadą podejścia przegrupowania jest to, że nie dostanie Rodziców, których tam nie ma – babonk