2015-12-08 11 views

Antwort

20

Dies funktioniert:

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

für zukünftige Referenz https://docs.djangoproject.com/de/dev/ref/contrib/admin/actions/#disabling-actions – felix

6

In Ihrem Admin-Klasse definieren has_delete_permissionFalse zurückzukehren:

class YourModelAdmin(admin.ModelAdmin): 
    ... 

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

Dann wird es nicht Taste löschen, und Sie werden nicht zulassen, dass Objekte in der Administrationsoberfläche löschen.

+3

Dadurch wird die Löschschaltfläche entfernt, aber die Löschoption wird nicht aus der Dropdown-Liste entfernt, mit der mehrere Einträge ausgewählt und Löschaktionen ausgeführt werden. –

+0

@DawnTherian, Sie haben Recht. Aber das Löschen ist nicht erlaubt; Versuch wird 403 verbotene Antwort zurückgeben. – falsetru

+0

@DawnTherian, FYI, Ihre Lösung wird löschen Schaltfläche im Detail Admin-Seite enthüllen. – falsetru

3

Wenn Sie alle die Aktion entfernen möchten:

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

Wenn Sie einige konkrete Aktion wollen:

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

Die Aktionen = ['name_of_action_you_want_to_keep'] funktioniert nicht für Django 2.0 – fanny

2

Sie können deaktivieren „Ausgewählte löschen "Aktion Site-weit:

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

Wenn Sie benötigen, diese Aktion enthalten, fügen 'delete_selected' auf der Aktionsliste:

actions = ['delete_selected'] 

Documentation