Generic Relations (?!): Unbestimmte Anzahl an Inhalten sollen hinzugefügt werden
Verfasst: Montag 31. Dezember 2018, 20:39
Hallo,
mit Django (Version 2) möchte ich eine App erstellen um zu verschiedenen Kameramodellen verschiedenste Dokumente zu erfassen (Texte, Bilder, Dateien). Von Anfang an ist nicht klar, wieviele Texte, Bilder und Dateien je Kamera hinzugefügt werden sollen. Daher hatte ich überlegt das Ganze als Generic Relation zu implementieren.
Nun habe ich in der models.py eine Klasse für "Device", eine für "Text", "File" und "Image" als auch ein model als generic relations namens "Inhalt", die wie folgt aussieht:
Nun kann ich ein "Objekt" vom Typ Device erstellen und dann auch verschiedene Inhalte in Form von Text, Image oder File. Wenn ich dann im (Admin Bereich) auf "Inhalte" gehe, kann ich zu meinem Device (im Beispiel "Mamiya RB 67") die verschiedenen Inhalte hinzufügen. Und jetzt zum Problem: Ich sehe zwar die "object_id" (vom Text, File oder Image) kann aber nicht ersehen, welches Objekt sich dahinter verbirgt:

Theoretisch kann ich auch eine object_id wählen, die "leer" ist, also die es noch nicht gibt. Es kommt keine Fehlermeldung, sondern es ist dann einfach nichts hinterlegt beim content_object (siehe obersten Eintrag):

Wie kann ich mir im Admin Bereich anzeigen lassen, was sich für ein Objekt hinter der objekt_id verbirgt?
Aus der Dokumentation werde ich nicht schlauer und im Netz suche ich schon seit Tagen... Tipps?
Oder gibt es eine andere Möglichkeit mein Ansinnen zu realisieren?
Grüße
sagro
mit Django (Version 2) möchte ich eine App erstellen um zu verschiedenen Kameramodellen verschiedenste Dokumente zu erfassen (Texte, Bilder, Dateien). Von Anfang an ist nicht klar, wieviele Texte, Bilder und Dateien je Kamera hinzugefügt werden sollen. Daher hatte ich überlegt das Ganze als Generic Relation zu implementieren.
Nun habe ich in der models.py eine Klasse für "Device", eine für "Text", "File" und "Image" als auch ein model als generic relations namens "Inhalt", die wie folgt aussieht:
Code: Alles auswählen
class Inhalt(models.Model):
device = models.ForeignKey(Device, related_name='inhalte', on_delete=models.CASCADE)
created = models.DateTimeField(auto_now_add=True)
info = models.CharField(max_length=200, blank=True)
# Generic Relations Fields:
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE,
limit_choices_to={'model__in': ('text', 'image', 'file')})
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
...

Theoretisch kann ich auch eine object_id wählen, die "leer" ist, also die es noch nicht gibt. Es kommt keine Fehlermeldung, sondern es ist dann einfach nichts hinterlegt beim content_object (siehe obersten Eintrag):

Wie kann ich mir im Admin Bereich anzeigen lassen, was sich für ein Objekt hinter der objekt_id verbirgt?
Aus der Dokumentation werde ich nicht schlauer und im Netz suche ich schon seit Tagen... Tipps?
Oder gibt es eine andere Möglichkeit mein Ansinnen zu realisieren?
Grüße
sagro