Nehmen wir an, ich habe ein Post-Objekt, das Bilder, Videos und andere Medientypen enthalten kann. Ich kann ein GenericForeignKey
verwenden, um sie miteinander zu verbinden. Etwas wie:
Jetzt kann ich einfach eine Admin-Oberfläche erstellen, wie:
%Vor%Nun die Frage :) In admin / kann ich problemlos einen neuen Beitrag erstellen. Zum Beitrag kann ich problemlos weitere MediaObject hinzufügen. Im Panel habe ich ein Dropdown-Menü zur Auswahl des Typs (Audio, Video, ...), aber ich muss manuell die ID des Objekts eingeben, das ich mit Post verknüpfen möchte.
Ich habe verschiedene Erweiterungen versucht, einschließlich Grappelli. Einige bieten die Möglichkeit, die ID von Objekten, die hier verlinkt werden sollen, nachzuschlagen . Ich möchte hier hinzufügen Objekte hinzufügen, z. B. eine AudioMedia, eine VideoMedia, eine ImageMedia, je nachdem, was ich aus dem Dropdown auswählen.
Irgendwelche Vorschläge?
Sie müssten ziemlich viel arbeiten, um das in Gang zu bringen.
Damit dies funktioniert, müssen Sie:
Klang entmutigend? Es ist.
Hier ist ein einfacherer Weg:
Habe einfach ein einziges "Media" -Modell. Sie haben ein paar Felder auf dem Modell, die nur für einen Ihrer Typen gültig sind (obwohl es viele Crossover gibt).
Benennen Sie alle Felder, die für einen einzelnen Medientyp spezifisch sind, mit einem Präfix für diesen Medientyp, d. h. image_size', or
video_title '.
Fügen Sie Ihrem ModelAdmin einen JavaScript-Handler hinzu, der Felder basierend auf einem Dropdown für den Medientyp selektiv ein- und ausblendet. Etwas wie das:
%Vor%Ich weiß, das ist ziemlich alt, aber das ist immer noch das erste Ergebnis, wenn man danach sucht.
django-admin-genericfk macht genau das, was Sie brauchen.
django-admin-genericfk funktioniert nicht mit Django 1.9.
Ansonsten habe ich nur folgendes Modul gefunden:
das gut gepflegt aussieht. Unglücklicherweise funktioniert sein JS-Code nicht gut mit der Einrichtung von jQuery (noConflict jQuery) durch Django CMS, daher scheint es, dass dies für mich keine Option ist. Aber es sollte in Ordnung sein, wenn es nicht in den Django CMS-Seiten verwendet wird, sondern im normalen Django-Admin.
Tags und Links django django-admin django-models