2013-03-13 2 views
13

Ich habe einige Modelle mit einer großen Anzahl von Inlines. Da nicht alle für jedes Objekt benötigt werden, habe ich das Inline-Modell mit extra = 0 so deklariert, dass ein kleiner auf dem Inline erschien.django 1.5 admin inline extra

Dies scheint jedoch nicht mehr in Django 1.5 zu arbeiten. Wenn extra = 0 festgelegt ist, kann die Inline nicht mehr bearbeitet werden.

Gibt es eine Möglichkeit, das 1.4-Verhalten in 1.5 zu bekommen?

Beispielcode:

class ModelInline(admin.StackedInline): 
    model = MyModel 
    extra = 0 

class OtherModelAdmin(admin.ModelAdmin) 
    inlines = [ModelInline] 

admin.site.register(OtherModel, OtherModelAdmin) 

Edit (einige Bildschirme):

Django 1.4: django 1.4 extra=0

Django 1.5: enter image description here

(Hinzufügen == hinzufügen)

+0

Beispielcode wäre gut, hier zu sehen. –

+0

k, hinzugefügt einige Beispielcode – Jannis

Antwort

7

Dies ist schon vorher passiert.

Es gibt einen Patch, der von Gabrial Hurley erstellt wurde, um das gewünschte Verhalten wiederherzustellen, ohne etwas anderes zu zerstören. Das ist vor 3 Jahren und ich weiß nicht, ob es noch für Django 1.5 funktioniert. Versuchen Sie einfach :)

https://code.djangoproject.com/attachment/ticket/13023/13023_inlines_patch.diff

Hier wird das Ticket für den gleichen Fehler ist (vor 3 Jahren):

https://code.djangoproject.com/ticket/13023

+0

Ich kann nicht scheinen, dies in 1.6 anwenden, weil total_form_count nicht mehr in models.py, nur in formsets.py definiert ist, und der Code ist anders, so dass ich nicht sicher bin, was ich ändern soll . Kann jemand helfen? – smwilsonau

+0

@smwilsonau In Django 1.6 heißt es 'initial_form_count' – catherine

+0

Danke, ich habe die entsprechenden Zeilen gefunden und den Patch angewendet, aber mein Problem stellte sich als etwas anderes heraus ... – smwilsonau

2

ich in die gleiche Ausgabe lief, weil ich den statischen Admin Inhalt hatte in ein Verzeichnis, das außerhalb von Djangos Installation war. Das Kopieren des statischen Django 1.5-Inhalts von django/contrib/admin/static/admin/js/in STATIC_ROOT/admin/js behob das Problem.

+1

Das ist eigentlich keine gute Sache. Wenn Sie die Django-Version irgendwann aktualisieren, werden Sie Probleme bekommen, weil Sie die neue Version dieser statischen Dateien nicht sehen werden (hatte gerade solch ein Problem). Wenn Sie den statischen Inhalt des Servers (https://docs.djangoproject.com/de/dev/howto/static-files/) serversichern, sollten Sie kein Problem haben – nivcaner

0

die bessere Lösung wäre, die get_extra-Methode des Inline selbst zu überschreiben. Dies funktioniert in Django 1.9, obwohl ich nicht für frühere Versionen sagen kann