You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 12:27:52