2015-12-08 19 views

Trả lời

20

này hoạt động:

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

để tham khảo trong tương lai https://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/#disabling-actions – felix

6

Trong lớp quản trị của bạn, xác định has_delete_permission trở False:

class YourModelAdmin(admin.ModelAdmin): 
    ... 

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

Sau đó, nó sẽ không hiển thị nút xóa, và sẽ không cho phép bạn xóa các đối tượng trong giao diện quản trị.

+3

Thao tác này sẽ xóa nút xóa nhưng sẽ không xóa tùy chọn xóa khỏi trình đơn thả xuống, được sử dụng để chọn nhiều mục nhập và thực hiện thao tác xóa. –

+0

@DawnTCherian, Bạn nói đúng. Nhưng không được phép xóa; cố gắng sẽ trả lại 403 phản ứng bị cấm. – falsetru

+0

@DawnTCherian, FYI, Giải pháp của bạn sẽ tiết lộ nút xóa trong trang quản trị chi tiết. – falsetru

3

Nếu bạn muốn loại bỏ tất cả các hành động:

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

Nếu bạn muốn có một số hành động cụ thể:

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

Tác vụ = ['name_of_action_you_want_to_keep'] không hoạt động đối với Django 2.0 – fanny

2

Bạn có thể vô hiệu hóa "Delete selected "hành động trên toàn trang web:

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

Khi bạn cần bao gồm hành động này, thêm 'delete_selected' vào danh sách hành động:

actions = ['delete_selected'] 

Documentation

Các vấn đề liên quan