2010-11-10 18 views
99

Mam witrynę django z wieloma modelami i formularzami. Mam wiele niestandardowych formularzy i formform oraz inlineformsets i niestandardowych sprawdzania poprawności i niestandardowych zestawów zapytań. Dlatego akcja dodawania modelu zależy od formularzy, które wymagają innych rzeczy, a "dodaj model" w administratorze django do 500 z niestandardowego zestawu zapytań.Administrator Django - Wyłącz akcję "Dodaj" dla określonego modelu

Czy mimo to można wyłączyć funkcję "Dodaj $ MODEL" dla niektórych modeli?

Chcę, aby /admin/appname/modelname/add/ dał 404 (lub odpowiedni komunikat o błędzie "odejść"), nie chcę, aby przycisk "Dodaj $ MODELNAME" był na widoku /admin/appname/modelname.

Administrator Django umożliwia wyłączenie działań administracyjnych (http://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/#disabling-actions), jednak jedyną czynnością dla tego modelu jest " Usuń wybrane'. tj. działania administratora działają tylko na istniejących modelach. Czy istnieje sposób django-esque to zrobić?

+0

FYI: "actions" w django admin są rozwijane, które stosuje się w widoku listy zmian do wszystkich zaznaczonych wierszy na liście. –

+1

Podobne (ale inne) pytanie: http://stackoverflow.com/questions/1721037/remove-add-another-in-django-admin-screen – user9876

Odpowiedz

248

To proste, wystarczy przeciążyć metodę has_add_permission w swojej klasie Admin tak:

class MyAdmin(admin.ModelAdmin): 
    def has_add_permission(self, request): 
     return False 
+6

To nie działało dla mnie. Przycisk "Dodaj model" nadal wyświetla się na stronie listy zmian modelu. – Cerin

+2

Nadal działa dla mnie w 2016 roku z Django 1.9. Dzięki! – lsh

+0

gdzie wpisać ten kod? – user5319825

5

Domyślnie syncdb tworzy 3 uprawnienia zabezpieczeń dla każdego modelu

  1. utworzenia (aka ADD)
  2. Zmień
  3. Usuń

Jeśli jesteś zalogowany jako administrator, otrzymasz WSZYSTKO bez względu na wszystko.

Ale jeśli utworzyć nową grupę użytkownika nazwie „General Access”(na przykład) następnie można przypisać TYLKO zmieniać i usuwać uprawnienia dla wszystkich swoich modeli.

Wtedy każdy zalogowany użytkownik będący członkiem tej grupy nie będzie miał uprawnień "Utwórz", nic z nim nie będzie wyświetlane na ekranie.

Powiązane problemy