Django Admin에서 삭제 링크를 비활성화하는 방법
"선택 항목 삭제"작업을 비활성화했습니다. 쉬운.
그러나 사용자는 여전히 항목을 클릭 할 수 있으며 하단에 빨간색 삭제 링크가 있습니다.
단순 :)
class DeleteNotAllowedModelAdmin(admin.ModelAdmin):
# Other stuff here
def has_delete_permission(self, request, obj=None):
return False
사용자 지정이 아닌 특정 항목을 비활성화하려면이 작업을 수행하십시오. 장고 1.6.6에서 나는 확장했다 get_actions
플러스 정의합니다 has_delete_permission
. has_delete_permission
솔루션은 나를 위해 드롭 다운 메뉴에서 작업을 제거하지 않습니다
class MyModelAdmin(admin.ModelAdmin):
....
def get_actions(self, request):
#Disable delete
actions = super(MyModelAdmin, self).get_actions(request)
del actions['delete_selected']
return actions
def has_delete_permission(self, request, obj=None):
#Disable delete
return False
에 포함하지 않고 actions = ['your_custom_action']
해당 모델에 대해 정의한 사용자 지정 작업 (def)에 대해서만 작동합니다. 솔루션 AdminSite.disable_action('delete_selected')
은 모든 모델에 대해 비활성화하므로 나중에 각 modelAdmin에 대해 명시 적으로 포함해야합니다.
yourapp.delete_yourmodel
해당 사용자 또는 그가 속한 그룹에 대한 권한을 비활성화하기 만하면 됩니다.
아마도 다음을 사용하고있을 것입니다.
AdminSite.disable_action('delete_selected')
추가 제어를 위해 자신의 관리자를 구현하고 필요한 모든 작업을 설정하십시오.
class MyModelAdmin(admin.ModelAdmin):
actions = ['whatever', 'actions']
참조 : http://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/#disabling-a-site-wide-action
admin.site.disable_action('delete_selected')
로부터 문서
여기의 솔루션은 이미 훌륭하지만 다음과 같이 재사용 가능한 믹스 인으로 사용하는 것을 선호합니다.
class NoDeleteAdminMixin:
def has_delete_permission(self, request, obj=None):
return False
다음과 같이 삭제를 방지하려는 모든 관리자에서 이것을 사용할 수 있습니다.
class MyAdmin(NoDeleteAdminMixin, ModelAdmin):
...
이것은 매우 오래되었지만 여전히 누군가를 도울 수 있습니다.
그 OP의 가정
... 사용자는 여전히 항목을 클릭 할 수 있으며 하단에 빨간색 삭제 링크가 있습니다.
"변경"보기의 빨간색 버튼을 나타냅니다. 이 버튼은 ModelAdmin.change_view
다음과 같이 메소드를 확장하여 제거 할 수 있습니다 .
def change_view(self, request, object_id=None, form_url='', extra_context=None):
return super().change_view(request, object_id, form_url,
extra_context=dict(show_delete=False))
show_save
, 및 에서도 동일한 작업을 수행 할 수 있습니다 show_save_and_continue
. 여기에 더 많은 정보와 대안이 있습니다 .
Also note that Django 2.1 now has a separate has_view_permission
(docs), which may be a better option, depending on your use case.
참고URL : https://stackoverflow.com/questions/4043843/in-django-admin-how-do-i-disable-the-delete-link
'programing tip' 카테고리의 다른 글
PHPExcel 첫 번째 행을 굵게 만들기 (0) | 2020.11.16 |
---|---|
Java에서 변수를 동기화하거나 잠그는 방법은 무엇입니까? (0) | 2020.11.16 |
LINQ to SQL 트랜잭션을 만드는 방법은 무엇입니까? (0) | 2020.11.15 |
Linux 커널 : 시스템 호출 후킹 예제 (0) | 2020.11.15 |
Python 정규식-R 접두사 (0) | 2020.11.15 |