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.
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!
Siehe: Django Admin - Deaktivieren Sie die Option "Hinzufügen" 'Aktion für ein bestimmtes Modell für eine echte Lösung.
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.
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.
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