Profile
enthält PointField
. Ich habe OSMGeoAdmin in ProfileAdmin verwendet, hier:
Aber kann nicht herausfinden, wie man es in einem Inline für die Anzeige in UserAdmin verwendet. Ich habe dies derzeit wie folgt eingerichtet:
%Vor%Ist es möglich, in dieser Situation die Klasse OSMGeoAdmin zu verwenden?
Dies wäre eine gute Funktion, um zu fragen, denke ich.
Als Workaround können Sie die Tatsache nutzen, dass ein InlineModelAdmin
einem ModelAdmin
sehr ähnlich ist. Beide erweitern BaseModelAdmin
.
Die Vererbung von StackedInline
und ModelAdmin
sollte nicht zu sehr kollidieren.
Das einzige Problem ist, dass beide Methoden __init__()
2 Positionsargumente annehmen und super().__init__()
ohne Argumente aufrufen. Also, was auch immer die Vererbungsreihenfolge ist, wird es mit TypeError: __init__() missing 2 required positional arguments: 'parent_model' and 'admin_site'
Glücklicherweise ist die Methode InlineModelAdmin.__init__()
, an der wir interessiert sind, nicht wirklich ausführlich oder komplex (nicht zu viele super().__init__()
werden in Kaskade aufgerufen).
Hier ist, wie es aussieht in Django 1.9 :
%Vor% Und hier ist, was sein Elternteil ( BaseModelAdmin
) aussieht wie in Django 1.9
Lasst uns jetzt alles zusammensetzen:
%Vor% Es ist nicht wirklich eine befriedigende Lösung, denn es erfordert das Kopieren / Einfügen von Code aus django, der innerhalb der von Ihnen verwendeten Version von Django anders sein kann. Bei der Aktualisierung von Django könnte es ein Problem sein. Es sollte jedoch funktionieren, bis es in Django als Mix-In oder als InlineModelAdmin
enthalten ist.
Hinweis: Die obigen Codefragmente stammen aus Django 1.9 . Sie sollten github-Tags durchsuchen, um die Ihrer Version entsprechenden Snippets zu finden.
Tags und Links django django-admin openstreetmap geodjango