2016-07-19 3 views
0

Register() dauert nur 3 Positionsargumente („Selbst“ implizit übergeben werden, wenn bereits eine Modeladmin-Klasse das Erscheinungsbild des Modells in Django Admin, würde meine Registrierung aussehen anpassen will SimpleHistoryAdmin registrieren, würde ich ein viertes Positions Argument des Hinzufügen, etwa so:Kann Simple-History nicht registriert werden, wenn ModelAdmin-Anpassung bereits verwendet wird? .</p> <pre><code>admin.site.register(AttorneyGroup, AttorneyGroupAdmin) </code></pre> <p>Wenn ich:

TypeError: register() takes from 2 to 3 positional arguments but 4 were given 
:

admin.site.register(AttorneyGroup, AttorneyGroupAdmin, SimpleHistoryAdmin) 

die folgende Ausnahme auslöst

Es scheint, dass simple-history nicht registriert werden kann, wenn der Benutzer das Modell bereits mit ModelAdmin anpasst. Gibt es eine andere Möglichkeit, Simple-History zu implementieren, die dieses Problem vermeidet?

Antwort

0

Sie können alle diese in separaten Registerfunktionen setzen, wenn man wollte:

admin.site.register(AttorneyGroup) 
admin.site.register(AttorneyGroupAdmin) 
admin.site.register(SimpleHistoryAdmin) 

Edit: in Ihrem Kommentar

Sie sind richtig. Mein ursprünglicher Code sollte zeigen, dass Sie nicht jedes Modell in einer Zeile machen müssen. Ich hätte genauer sein sollen. Sie können dies stattdessen tun:

from .models import AttorneyGroup, SimpleHistory 

admin.site.register(AttorneyGroup, AttorneyGroupAdmin) 
admin.site.register(SimpleHistory, SimpleHistoryAdmin) 
+0

das Register gefällt!() Funktion nimmt 3 Positionsargumente, 'def registrieren (selbst, model_or_iterable, admin_class = Keine, ** Optionen):' Wie ich verstehe, wenn ich AttorneyGroup von AttorneyGroupAdmin getrennt würde, würde es ju Behandle die AttorneyGroup so, als ob ich keine ModelAdmin-Klasse dafür angegeben hätte. Ich wäre also nicht in der Lage, die von AttorneyGroupAdmin vorgenommenen Anpassungen zu übernehmen. –

1

es wie folgt tun:

class AttorneyGroupAdmin(SimpleHistoryAdmin): 
     #custom admin 

admin.site.register(AttorneyGroup, AttorneyGroupAdmin) 

Auf diese Weise können Sie die einfache Geschichte Admin verwenden, während es immer noch die Anpassung jedoch würden Sie