2015-12-08 11 views

Odpowiedz

20

to działa:

def get_actions(self, request): 
    actions = super(YourAdmin, self).get_actions(request) 
    if 'delete_selected' in actions: 
     del actions['delete_selected'] 
    return actions 
+0

do wykorzystania w przyszłości https://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/#disabling-actions – felix

6

W swojej klasie administratora, definiować has_delete_permission wrócić False:

class YourModelAdmin(admin.ModelAdmin): 
    ... 

    def has_delete_permission(self, request, obj=None): 
     return False 

Następnie, nie pokaże przycisk usuwać i nie pozwoli na usunięcie obiektów w panelu administratora.

+3

Spowoduje to usunięcie przycisku usuwania, ale nie usunie opcji usuwania z listy rozwijanej, która służy do wybierania wielu wpisów i wykonywania operacji usuwania. –

+0

@DawnTCherian, Masz rację. Ale usunięcie nie jest dozwolone; próba zwróci 403 zabronioną odpowiedź. – falsetru

+0

@DawnTCherian, FYI, Twoje rozwiązanie ujawni przycisk usuwania ze strony administratora. – falsetru

3

Jeśli chcesz usunąć wszystkie działania:

class UserAdmin(admin.ModelAdmin): 
    model = User 
    actions = None 

Jeśli chcesz jakieś konkretne działania:

class UserAdmin(admin.ModelAdmin): 
    model = User 
    actions = ['name_of_action_you_want_to_keep'] 
+0

Akcje = ['name_of_action_you_want_to_keep'] nie działają dla Django 2.0 – fanny

2

Możesz wyłączyć „Usuń zaznaczone "akcja na terenie:

from django.contrib.admin import site 
site.disable_action('delete_selected') 

Kiedy trzeba podać tę czynność, należy dodać do listy 'delete_selected' działania:

actions = ['delete_selected'] 

Documentation