Die einfachste gefundene Lösung bestand darin, die Funktion get_readonly_fields von ModelAdmin zu überschreiben:
%Vor%Das Objekt wird für die Seite "Hinzufügen" und eine Instanz Ihres Modells für die Änderungsseite nicht angezeigt. Edit: Bitte beachten Sie, dass dies auf Django == 1.2
getestet wurdeEs gibt zwei Dinge in Ihrer Frage zu behandeln.
Existiert nicht so wie in Django, aber Sie können es selbst implementieren, und dieser Blogbeitrag kann helfen.
Ich denke, Sie suchen nach einer Lösung im Admin-Site-Kontext (andernfalls verwenden Sie einfach zwei verschiedene Formulare in Ihren Ansichten).
Sie könnten eventuell add_view
oder change_view
in Ihrem ModelAdmin
überschreiben und ein anderes Formular in einer der Ansichten verwenden, aber ich befürchte, dass Sie am Ende eine schreckliche Menge doppelten Codes haben werden.
Eine andere Lösung, die ich mir vorstellen kann, ist ein Formular, das seine Felder bei der Instanziierung ändert, wenn ein instance
-Parameter übergeben wird (dh ein edit Fall). Angenommen, Sie haben eine ReadOnlyField
-Klasse, dann erhalten Sie etwas wie:
Hier wird das Feld title
im Modell Stuff
auf der Änderungsseite der Verwaltungsseite schreibgeschützt, kann aber im Erstellungsformular bearbeitet werden.
Ich hoffe, das hilft.
Eine Option besteht darin, die change_form-Vorlage zu überschreiben oder zu ersetzen für dieses spezifische Modell.
Tags und Links django django-admin customization