在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_permissionhas_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')

从文档