Làm cách nào để xóa hành động xóa mặc định trong quản trị Django? Công việc sau đây có được không?Xóa hành động xóa mặc định trong quản trị Django
actions = [ ]
Làm cách nào để xóa hành động xóa mặc định trong quản trị Django? Công việc sau đây có được không?Xóa hành động xóa mặc định trong quản trị Django
actions = [ ]
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
để tham khảo trong tương lai https://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/#disabling-actions – felix
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ị.
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. –
@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
@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
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']
Tác vụ = ['name_of_action_you_want_to_keep'] không hoạt động đối với Django 2.0 – fanny
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']
Cho rằng bạn có thể sử dụng các nhóm và cho phép trong django admin. –