如何在Django Admin中将模型设置为不可编辑状态?
嘿,我来帮你搞定这个需求!要让Contact模型在Django Admin里变成纯只读状态——只能查看记录,完全不能添加、修改或删除,其实用Admin类的几个属性就能轻松实现,下面给你具体步骤和代码:
实现方法
你需要在admin.py里为Contact模型创建对应的Admin类,通过覆盖几个关键的权限方法和设置只读字段来达成目标:
# admin.py from django.contrib import admin from .models import Contact @admin.register(Contact) class ContactAdmin(admin.ModelAdmin): # 把所有字段设置为只读,详情页只会显示文本,没有输入控件 readonly_fields = ('name', 'email', 'subject', 'message') # 列表页显示的字段(可选,让列表更直观) list_display = ('name', 'email', 'subject') # 禁用添加新记录的权限(Admin顶部的"添加"按钮会消失) def has_add_permission(self, request): return False # 禁用修改记录的权限(详情页的"保存"按钮会消失) def has_change_permission(self, request, obj=None): return False # 可选:禁用删除记录的权限,如果需要保留删除功能可以删掉这个方法 def has_delete_permission(self, request, obj=None): return False
各部分作用说明
readonly_fields:指定所有字段为只读,当你进入单条记录的详情页时,所有字段都会以纯文本形式展示,不会出现任何可编辑的输入框has_add_permission:返回False后,Admin界面里不会再出现添加Contact记录的入口has_change_permission:返回False后,即使进入详情页,也不会有保存修改的按钮,彻底禁止编辑操作has_delete_permission:如果不需要删除功能,就保留这个方法;如果允许管理员删除记录,直接删掉这个方法即可
这样设置后,你的Contact模型在Admin里就完全是只读状态了,只能查看现有记录,无法进行任何修改操作~
内容的提问来源于stack exchange,提问作者Adil Ijaz
相关产品推荐
相关产品推荐

