Erstellen eines generischen Multi-Table-Vererbungsdesigns in Django

Zunächst einige Links zu Seiten, die ich als Referenz verwendet habe:Eine SO Frageund die Django-Dokumentationgenerische Beziehungen undVererbung mehrerer Tabellen.

Bisher habe ich einen Mehrtabellen-Vererbungsentwurf eingerichtet. Objekte (z. B. Auto, Hund, Computer) können eine Objektklasse erben. Ich muss in der Lage sein, Objekte aus der Datenbank abzurufen, die Unterklasse abzurufen und Dinge damit zu tun. In meinem Design können die verschiedenen Arten von Objekten nicht einzeln abgerufen werden. Daher muss der Objektcontainer verwendet werden, um alle Objekte in einem Objekt zusammenzufassen. Sobald ich den Gegenstand habe, wird in den Django-Dokumenten angegeben, dass ich die Unterklasse erhalten kann, indem ich auf das Attribut mit dem Namen des Modells verweise (z. B. myitem.car oder myitem.computer).

Ich weiß nicht, auf welchen Objekttyp sich mein Objekt bezieht, also wie kann ich das Kind bekommen? Gibt es einen eingebauten Weg, um dies zu tun? Hier sind einige andere Ideen, die ich hatte: (einige verrückter als andere)

Ich dachte, ich könnte Item eine Art GenericForeignKey hinzufügen, der auf das untergeordnete Objekt verweist, aber ich bezweifle, dass es sogar zulässig ist, dass eine übergeordnete Klasse über einen ForeignKey auf eine untergeordnete Klasse verweist.Ich nehme an, ich könnte einen ForeignKey (ContentType) in der Item-Klasse haben und das Attribut von Item finden, um das untergeordnete Element basierend auf dem Namen des ContentType zu erhalten.Obwohl dies eine hässliche Methode ist, kann ich möglicherweise eine Liste der Objekttypen führen und jede als Attribut testen, bis kein DoesNotExist-Fehler ausgegeben wird.

Wie Sie sehen, sind diese vorgeschlagenen Lösungen nicht so elegant, aber ich hoffe, dass ich keinen von ihnen verwenden muss und jemand hier einen besseren Vorschlag haben könnte.

Danke im Voraus

Antworten auf die Frage(2)

Ihre Antwort auf die Frage