首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

django admin在修改obj时使字段为只读,但在添加新obj时需要

在Django Admin中,可以通过自定义ModelAdmin类来实现在修改对象时使字段为只读,但在添加新对象时需要编辑的需求。以下是一种实现方式:

  1. 创建一个自定义的ModelAdmin类,继承自Django自带的ModelAdmin类。
代码语言:python
代码运行次数:0
复制
from django.contrib import admin

class MyModelAdmin(admin.ModelAdmin):
    readonly_fields = ('field1', 'field2', 'field3')  # 设置需要设为只读的字段

    def get_readonly_fields(self, request, obj=None):
        if obj:  # 如果是修改对象
            return self.readonly_fields + ('field4', 'field5')  # 添加需要额外设为只读的字段
        return self.readonly_fields  # 添加新对象时,所有字段都设为只读
  1. 在admin.py文件中注册你的ModelAdmin类。
代码语言:python
代码运行次数:0
复制
from django.contrib import admin
from .models import MyModel

admin.site.register(MyModel, MyModelAdmin)

在上述代码中,readonly_fields属性用于设置需要设为只读的字段。get_readonly_fields方法用于根据操作类型动态返回只读字段列表。如果是修改对象,则额外添加需要设为只读的字段;如果是添加新对象,则返回所有字段都设为只读。

这样,在Django Admin中,当你修改对象时,指定的字段将会是只读的,而当你添加新对象时,所有字段都将是只读的。

关于Django Admin的更多信息和用法,你可以参考腾讯云的Django Web框架文档:Django Web框架

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django admin 一些有用的设置

4.设置只读字段  使用admin的时候,ModelAdmin默认对于model的操作只有增加,修改和删除,但是总是有些字段是不希望用户来编辑的。...request, obj, form, change)   这样,添加数据,会自动保存申请人和备案号。  ...我们也可以修改数据获取保存前的数据: ? 通过change参数,可以判断是修改还是新增,同时做相应的操作。上述代码就是替换磁盘的时候修改状态,并写入日志。  代码: ?...8.修改app的显示名称 DajngoAdmin后台默认显示的应用的名称为创建app的名称。...我们如何修改这个app的名称达到定制的要求呢,其实Django已经文档里进行了说明。 从Django1.7以后不再使用app_label,修改app相关需要使用AppConfig。

2.6K70

Django admin管理工具的使用、定制及源码解析

4.设置只读字段 使用admin的时候,ModelAdmin默认对于model的操作只有增加,修改和删除,但是总是有些字段是不希望用户来编辑的。...(request, obj, form, change)   这样,添加数据,会自动保存申请人和备案号。...我们也可以修改数据获取保存前的数据: ? 通过change参数,可以判断是修改还是新增,同时做相应的操作。上述代码就是替换磁盘的时候修改状态,并写入日志。...8.修改app的显示名称 DajngoAdmin后台默认显示的应用的名称为创建app的名称。...我们如何修改这个app的名称达到定制的要求呢,其实Django已经文档里进行了说明。 从Django1.7以后不再使用app_label,修改app相关需要使用AppConfig。

4K40
  • CRM客户关系管理系统(十一) 第十一章、学员报名流程开发

    %} 添加{% get_model_name admin_class %} 11.2.报名流程和models设计 (1)后台修改左侧...url 添加CustomerInfo字段,身份证信息,紧急联络人,性别 有些字段只读的,填写信息的时候不能修改,因为如果设置了只读(添加属性disabled=true),提交的时候会报这些字段空,导致提交错误...所以在前段添加了js代码,BeforeFormSubmit  提交前去掉disable=true(因为数据库中有默认值,提交的时候就不会报错) 防止用户通过前端改html代码的方式改只读字段的信息,...所以form.py里面添加了一个自定义的验证方法(clean),如果只读字段提交的时候信息跟数据库中默认的不一样,就报错 (1)crm/urls.py # crm/urls.py from django.conf.urls...= form_val: #就提示只读字段不能修改 #add_error是字段级别的错误

    99200

    django xadmin 管理器常用显示设置方式

    students','fav_nums','image','click_nums','add_time'] # 设置显示图标 model_icon = 'fa fa-check-square' # 设置字段可以直接在列表页修改...# obj实际是一个course对象 obj = self.new_obj # 对当前课程进行保存,否则统计的课程数会少一个 obj.save() if obj.course_org...它是以ajax加载的方式来完成的,通过搜索来进行添加某个字段,这样可以避免数据量过大,把所有数据都加载进来 relfield_style='fk-ajax' class LessonInline...course的同时,同页面添加相应的章节与课程资源 class CourseAdmin(object): inlines = [LessonInline,CourseResourceInline]...#增加章节和课程资源 补充知识:Django之定制属于自己的admin admin.py中使用:admin.site.register(models.类名) # register中可以看出register

    61510

    Django Admin中上传`.msg`文件并预览内容的实现教程

    保存内容,我们会将.msg文件的内容读取出来并存储content字段中。3....界面中显示文件名和内容预览,同时内容预览字段只读的。...save_model: 我们重写了save_model方法,保存模型实例,检查上传的文件是否.msg格式。如果是,我们使用pywin32库读取文件内容并保存到数据库中。...添加文件上传字段为了Admin界面中实现文件上传,我们需要在模型表单中添加一个临时的文件字段。这个字段不会被保存到数据库中,但用于接收用户上传的文件。...预览文件内容当用户Admin界面中上传.msg文件并保存,文件的内容会被提取并存储在数据库中。然后,这些内容会在Admin界面的preview_content字段中显示给用户。

    8710

    Django-xadmin+rule对象级权限的实现方式

    类似还有django-suit等,本文使用xadmin(功能更丰富); 实现需求2:django-admin,以及xadmin都只有基于model级的权限控制机制,需要自己扩展或者使用开源解决方案,如django-guardian...', ) 2.2 建立model 新增CompanyUser模型表示商家账户(即对django自带user模块进行扩展,使每个账号绑定自己的公司码),新增Customer模型表示商家的客户信息并包含公司码字段...例子 以常见的资产 asset 例 表名字 asset 字段 groups (分组 dev,ops) 权限划分 新建用户 hequan 新建组 dev Request 表 添加 GET...(代表只读) POST (代表更新 删除) RolePermission 添加 角色 asset-dev只读 表名字assset 请求 GET 权限条件 {“groups”:’dev’...} Role 表中 添加 系统用户组 dev 角色组权限 asset-dev只读 权限验证代码 import json from system.models import Role from functools

    95920

    Django权限机制的实现

    Django其实包含了object permission的框架,但没有具体实现,object permission的实现需要借助第三方app django-guardian,我们开发中用调用django...,自定义的permission可以我们定义model手动添加: class Task(models.Model): ......model中创建自定义权限,从系统开发的角度,可理解创建系统的内置权限,如果需求中涉及到用户使用系统创建自定义权限,则要通过下面方法: from myapp.models import BlogPost...2.4 permission_required 装饰器 权限能约束用户行为,当业务逻辑中涉及到权限检查,decorator能够分离权限验证和核心的业务逻辑,使代码更简洁,逻辑更清晰。...提供的object permission机制使django的权限机制更加完善。

    1.1K10

    零基础使用Django2.0.1打造在线教育网站(二十六):xadmin的进阶开发

    首先需要把我们在前面当Debug=False修改的以下代码全部删除掉: **** 为了解决上述问题,我们这样做:打开eduline/settings.py文件,新增代码如下: STATIC_ROOT...自定义icon 所谓icon其实就是你的功能小图标: [1240] 我们以修改邮箱验证码例,打开users/adminx.py文件,EmailVerifyRecordAdmin函数新增一行代码: model_icon...默认排序,字段只读字段隐藏 我们以课程例,来介绍这3个小功能。...= ['fav_nums'] # # 注意字段只读字段隐藏是冲突的,不允许设置一个字段只读同时隐藏 # 课程直接添加章节,课程资源 inlines = [LessonInline...= ['fav_nums'] # # 注意字段只读字段隐藏是冲突的,不允许设置一个字段只读同时隐藏 # 课程直接添加章节,课程资源 inlines = [LessonInline

    1.3K20

    美多商城项目(十)

    3.保存支付结果并修改订单支付状态。 4.返回应答。 3.Xadmin Xadmin是Django的第三方扩展,比Django自带的admin站点使用方便。我们可以使用此管理站点进行网站管理。...python manage.py migrate 总路由中添加xadmin的路由信息 import xadmin urlpatterns = [ # url(r'^admin/', admin.site.urls...ordering 默认排序的字段 readonly_fields 在编辑页面的只读字段 ? exclude 在编辑页面隐藏的字段 list_editable 列表页可以快速直接编辑的字段 ?...Django的原生admin站点中,如果想要在站点保存或删除数据,补充自定义行为,可以重写如下方法: save_model(self,request,obj,form,change) delete_model...xadmin会自动admin站点添加用户User的管理配置 xadmin使用xadmin.plugins.auth.UserAdmin来配置 如果需要自定义User配置的话,需要先unregister

    1.6K10

    37.Django1.11.6文档

    不过面对这种情况还有个更好的办法就是使 用Proxy models. order_with_respect_to Options.order_with_respect_to 使此对象相对于给定字段可以排序...ModelAdmin.get_readonly_fields(request, obj=None) list方法添加表单上给予tuple和obj(或HttpRequest),希望返回将以只读形式显示的字段名称的...一个特定的app重写admin模板, 需要拷贝django/contrib/admin/templates/admin 目录到你刚才创建的目录下, 并且修改它们....要向您的管理网站添加视图,请扩展基本get_urls()方法,视图添加模式。 添加密码重置功能 您可以通过URLconf中添加几行来将密码重置功能添加到管理站点。 ...当设置TrueDjango 将对每个请求保存会话到数据库中。 注意会话的Cookie 只有一个会话被创建或修改后才会发送。

    24.3K80
    领券