在Django的pipe理员如何禁用删除链接
我已经设法禁用“删除select”操作。 简单。
但用户仍然可以点击一个项目,然后在底部有红色的删除链接。
简单:)
class DeleteNotAllowedModelAdmin(admin.ModelAdmin): # Other stuff here def has_delete_permission(self, request, obj=None): return False
如果你想禁用一个不是自定义的特定的一个做这个。 在django 1.6.6中,我必须扩展get_actions
加上定义has_delete_permission
。 has_delete_permission
解决scheme没有摆脱从我的下拉列表中的行动:
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']
,只适用于您为该模型定义的自定义动作(defs)。 解决schemeAdminSite.disable_action('delete_selected')
将为所有模型禁用,所以稍后您必须在每个模型中明确包含它们.Admin
只需禁用该用户或其所属组的yourapp.delete_yourmodel
权限即可。
那么你可能正在使用:
AdminSite.disable_action('delete_selected')
为了进一步控制,只需实现自己的pipe理员,并将其行为设置为任何你需要的:
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')
从文档