如何实现Django Admin列表页的只读展示效果?
Django Admin 实现列表页只读展示效果
要实现类似list_display的只读列表展示,同时禁止编辑操作但保留列表可见性,可以通过以下调整优化你的ModelAdmin类:
保留列表可见性,精准禁用编辑权限
重写has_change_permission方法,区分列表页和编辑页:列表页允许访问,编辑页直接禁用,避免直接返回False导致列表消失:def has_change_permission(self, request, obj=None): # 仅开放列表页访问,禁止进入编辑页 if obj is None: return True return False移除列表页的编辑入口
通过list_display_links设置为None,彻底移除列表中默认的编辑按钮,让用户无法触发编辑操作:list_display_links = None按需禁用添加/删除权限
如果不需要添加或删除功能,直接重写对应权限方法:def has_add_permission(self, request): return False def has_delete_permission(self, request, obj=None): return False
最终完整的ModelAdmin代码:
class TheList(admin.ModelAdmin): list_display = ['name', 'age'] actions = None list_display_links = None def has_change_permission(self, request, obj=None): return obj is None def has_add_permission(self, request): return False def has_delete_permission(self, request, obj=None): return False
设置完成后,后台会正常展示包含name和age的只读列表,无编辑按钮、无法进入编辑页,同时禁止添加和删除对象,完全符合只读列表的需求。
内容的提问来源于stack exchange,提问作者ETHERC20
相关产品推荐
相关产品推荐

