Tworzenie ogólnego schematu dziedziczenia w Django

Po pierwsze, niektóre linki do stron, których użyłem w celach informacyjnych:Pytanie SOi Django docsogólne relacje idziedziczenie wielostolikowe.

Do tej pory mam skonfigurowany projekt dziedziczenia wielostolikowego. Obiekty (np. Samochód, pies, komputer) mogą dziedziczyć klasę przedmiotów. Muszę być w stanie odzyskać przedmioty z bazy danych, pobrać podklasę i zrobić z nią różne rzeczy. Mój projekt nie pozwala na pobieranie różnych rodzajów obiektów jeden po drugim, więc potrzebuję użyć kontenera przedmiotów, aby zawinąć je wszystkie w jeden. Po otrzymaniu elementu dokumenty Django mówią, że mogę uzyskać podklasę, odwołując się do atrybutu z nazwą modelu (np. Myitem.car lub myitem.computer).

Nie wiem, jakiego typu obiekt odnosi się do mojego przedmiotu, więc jak mogę dostać dziecko? Czy istnieje sposób, aby to zrobić? Oto kilka innych pomysłów, które miałem: (trochę bardziej szalony niż inne)

Myślałem, że mógłbym dodać jakiś rodzaj GenericForeignKey do elementu, który odwołuje się do potomka, ale wątpię, że jest nawet legalne, aby klasa nadrzędna odniosła się poprzez klucz obcy do klasy potomnej.Przypuszczam, że mógłbym mieć klucz obcy (ContentType) w klasie Item i znaleźć atrybut Item, aby uzyskać potomka na podstawie nazwy ContentType.Wreszcie, chociaż jest to brzydka metoda, mogę być w stanie zachować listę typów obiektów i spróbować każdego z nich, dopóki nie zostanie zgłoszony błąd DoesNotExist.

Jak widzisz, te proponowane rozwiązania nie są tak eleganckie, ale mam nadzieję, że nie będę musiał używać jednego z nich, a ktoś tutaj może mieć lepszą sugestię.

Z góry dziękuję

questionAnswers(2)

yourAnswerToTheQuestion