Entfernen Sie die Funktion "Hinzufügen" in Django admin [duplizieren]

8

Gibt es eine Möglichkeit, die "Hinzufügen" -Funktionalität auf der Django-Verwaltungsseite zu entfernen? Für bestimmte Entitäten möchte ich nur, dass der Django-Administrator sie sehen oder bestehende ändern kann, aber keine neuen hinzufügen kann.

    
Krystian Cybulski 02.08.2009, 00:51
quelle

6 Antworten

3

Sicher, Sie können admin sehr individuell anpassen, indem Sie den Anweisungen hier folgen - I Glauben Sie, dass das, was Sie wollen, teilweise durch das Überschreiben von ModelAdmin.save_model(self, request, obj, form, change) in Ihrer eigenen ModelAdmin -Unterklasse erhalten werden kann, um sicherzustellen, dass nichts im Geschäft passiert, wenn change falsch ist (dh ein Versuch, eher als zu ändern) und teilweise Indem Sie ModelAdmin.add_view(self, request, form_url='', extra_context=None) überschreiben, um eine "Ansicht hinzufügen" anzuzeigen, die dem Administrator deutlich macht, dass es NICHT erlaubt ist, Objekte über diese Route hinzuzufügen. Ich habe nicht die spezifische Admin-Anpassung, die Sie benötigen, aber ich habe andere gemacht und sie scheinen ziemlich reibungslos zu arbeiten!

    
Alex Martelli 02.08.2009, 01:18
quelle
3

Sie können die Berechtigung für jede Benutzergruppe über die Admin-Oberfläche anpassen: versuchen Sie, zu /admin/auth/group zu gehen, und es sollte von dort aus einfach sein.

Dies wird nicht so granular sein wie die von der früheren Antwort angebotene Lösung, aber es wird sich um die meisten Ihrer Bedürfnisse kümmern, ohne dass Sie den Admin anpassen müssen.

    
anschauung 02.08.2009 03:27
quelle
2

Wenn Sie die Berechtigungen zum Beschränken des Zugriffs ändern, erhalten Sie immer noch das Pluszeichen von einem FK / MtM-Feld. Wenn Sie darauf klicken, wird ein Popup-Fenster geöffnet, in dem "Berechtigung verweigert" angezeigt wird.

Sie können das Pluszeichen sogar komplett entfernen, indem Sie das Modell nicht einfach mit dem Admin registrieren.

Ich habe eine Situation, in der ich vordefinierte Kategorien habe, von denen ich möchte, dass Benutzer mehrere auswählen können. Der beste Weg, dies zu tun, ist mit einem models.ManyToMany-Feld. Sie können das Modell beim Administrator registrieren, die Daten nach Bedarf eingeben und dann die Registrierung entfernen.

    
Tim Fletcher 29.06.2010 19:43
quelle
1

Ein einfacher effektiver Weg besteht darin, max_num=0 für diesen speziellen Inline-Code festzulegen.

    
Satya 09.01.2012 22:22
quelle
0

Satyas Vorschlag, max_num = 0 zu setzen, funktioniert einwandfrei.

Nach den Django-Dokumenten für die ModelForm-Klasse:

  

Für Benutzer mit JavaScript-fähigen Browsern wird ein Link "Add another" bereitgestellt, um eine beliebige Anzahl zusätzlicher Inlines zusätzlich zu denen, die als Ergebnis des zusätzlichen Arguments bereitgestellt werden, hinzuzufügen.

     

Der dynamische Link wird nicht angezeigt, wenn die Anzahl der aktuell angezeigten Formulare max_num überschreitet oder wenn der Benutzer JavaScript nicht aktiviert hat.

und

  

Wie bei regulären Formsets können Sie die Parameter max_num und extra zu modelformset_factory verwenden, um die Anzahl der angezeigten zusätzlichen Formulare zu begrenzen.

     

max_num verhindert nicht, dass vorhandene Objekte angezeigt werden

    
Eli Burke 19.12.2012 14:15
quelle

Tags und Links