Ich habe die Django-Dokumente bezüglich des contenttypes-Frameworks mehrere Male untersucht und ich verstehe es einfach nicht gut genug, um generische Beziehungen in meinem Projekt zu implementieren. Ich habe nach Online-Beispielen oder Tutorials zu diesem Thema gesucht, aber ich kann kein einziges finden. Nennen Sie mich dumm, aber ich brauche Hilfe bei dieser Frage (bitte antworten Sie nicht einfach mit den Dokumenten). Aufgrund des Mangels an Ressourcen online, glaube ich, wenn du diese Frage mit einem gründlichen Beispiel beantwortest, ist deine Antwort vielleicht das hilfreichste Beispiel, das bis dato online bezüglich der generischen Django-Beziehungen verfügbar ist (Bonus!).Django: Beispiel für generische Beziehungen mit dem contenttypes-Framework?
Meine Frage ist also: Kann jemand ein einfaches Beispiel der Modelle zeigen und vielleicht ein paar Zeilen Code, die zeigen, wie man mit Instanzen eines generischen Modells interagiert?
Als Inspiration, hier ist das, was ich würde glauben, eine sehr häufige Situation:
Eine Website hat Medienelemente, die die gleichen weitgehend behandelt werden, sind aber etwas anders. Nehmen wir zum Beispiel an, dass es Bild- und Videoelemente gibt und Benutzer ein Element oder einen Kommentar zu einem Objekt "mögen" können. Die Likes und Kommentare sollten gleich behandelt werden, unabhängig davon, ob sie auf einem Bild oder einem Videoelement gepostet werden. Wenn ein ItemView zum Anzeigen eines Bildes oder eines Videos im Album eines Benutzers vorhanden ist, sind die folgenden Arten von Anrufen möglich: mediaitem.comments.all()
oder len(mediaitem.likes.all())
oder comment.user_who_commented
, ohne zu wissen, um welche Art von Medienelement es sich handelt (Bild oder Video) .
Ich glaube, Sie sechs Modelle dafür brauchen würden:
- Abstrakt
MediaItem
Klasse - Zwei verschiedene Arten von Artikeln Medien:
ImageItem
undVideoItem
- Abstrakt
MediaItemActions
Klasse - Zwei verschiedene Arten von Aktionen, die in Bezug auf Medienelemente ausgeführt werden können:
Like
undComment
Wenn Sie wissen, wie diese Django Funktion nutzen zu können, bitte zeigen Sie uns ein vollständiges Beispiel! Ich habe das Gefühl, dass es ein extrem leistungsfähiges Werkzeug sein würde und es schmerzt, es in meiner Anwendung zu verwenden. Je expliziter, desto besser.