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

在Django Admin上将HTML作为只读字段返回的另一种方法

是通过自定义字段的方式实现。以下是一个完善且全面的答案:

在Django Admin中,如果我们想将HTML作为只读字段返回,可以通过自定义字段的方式来实现。具体步骤如下:

  1. 创建一个自定义字段类,继承自django.contrib.admin.SimpleListFilter
  2. 在自定义字段类中,重写lookups方法,返回一个包含筛选选项的列表。这些选项将显示在Django Admin的右侧边栏中。
  3. 重写queryset方法,根据用户选择的筛选选项来过滤查询集。
  4. 重写value方法,返回用户选择的筛选选项的值。
  5. 在Django Admin的list_display属性中,将自定义字段类添加为一个列。

下面是一个示例代码:

代码语言:python
代码运行次数:0
复制
from django.contrib import admin
from django.utils.html import format_html

class HTMLFieldFilter(admin.SimpleListFilter):
    title = 'HTML字段'
    parameter_name = 'html_field'

    def lookups(self, request, model_admin):
        return (
            ('yes', '是'),
            ('no', '否'),
        )

    def queryset(self, request, queryset):
        if self.value() == 'yes':
            return queryset.filter(html_field__isnull=False)
        elif self.value() == 'no':
            return queryset.filter(html_field__isnull=True)
        else:
            return queryset

    def value(self):
        value = super().value()
        if value in ('yes', 'no'):
            return value
        return None

class YourModelAdmin(admin.ModelAdmin):
    list_display = ('id', 'your_field', 'html_field')
    list_filter = (HTMLFieldFilter,)

    def html_field(self, obj):
        if obj.html_field:
            return format_html(obj.html_field)
        return ''
    html_field.short_description = 'HTML字段'

admin.site.register(YourModel, YourModelAdmin)

在上述示例代码中,我们创建了一个自定义字段类HTMLFieldFilter,它继承自django.contrib.admin.SimpleListFilter。我们在lookups方法中返回了一个包含筛选选项的列表,这些选项将显示在Django Admin的右侧边栏中。在queryset方法中,根据用户选择的筛选选项来过滤查询集。在value方法中,返回用户选择的筛选选项的值。然后,我们在YourModelAdmin中将自定义字段类添加为一个列,并在html_field方法中将HTML字段作为只读字段返回。

这种方法可以让我们在Django Admin中以只读方式展示HTML字段,并根据需要进行筛选。这对于需要展示HTML内容的管理界面非常有用,例如展示富文本内容或渲染Markdown格式的内容。

腾讯云相关产品和产品介绍链接地址:

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

相关·内容

Python Django开发 经验技巧总结(一)

文章目录 1.前后台数据传递 2.与数据库交互并返回数据几种比较常用方法 3.一个表单对应多个按钮解决方案 4.HTML表单控件及操作 5.消息框架 message使用 6.日期和时间DateField...#del功能实现 return render(request, 'xxx.html', yyy) 4.HTML表单控件及操作 HTML中表单书写一般为: <form method...需要注意是,设置该参数为true时,并不简单地意味着字段默认值为当前时间,而是指字段会被“强制”更新到当前时间,你无法程序中手动为字段赋值;如果使用django自带admin管理器,那么该字段admin...中是只读。...与auto_now类似,auto_now_add也具有强制性,一旦被设置为True,就无法程序中手动为字段赋值,admin字段也会成为只读

1.4K10

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

BlogAdmin(admin.ModelAdmin): #listdisplay设置要显示列表中字段(id字段Django模型默认主键) list_display...唯一区别就是 这种方法 是登录http://ip/admin/ 站点和用户组在一起 ? 而第一种方法是分开。 5.通过当前登录用户过滤显示数据 官方文档介绍: ?...4.设置只读字段 使用admin时候,ModelAdmin默认对于model操作只有增加,修改和删除,但是总是有些字段是不希望用户来编辑。...7.对单条数据 显示样式修改 需求如下: ? 每条数据都有 个确认标识(上图红框中),如果已经确认,用户再点击进入查看信息时候全部只读显示,即不能在做修改,如果没确认可以修改。...,插入数据库,以实现复制数据功能,返回值即新数据id(这是model里__str__中定义) r_pk = Record.objects.create(**old_data) # 修改数据后重定向

4K40
  • Django admin 一些有用设置

    Django自带后台管理是Django明显特色之一,可以让我们快速便捷管理数据。后台管理可以各个appadmin.py文件中进行控制。以下是我最近摸索总结出比较实用配置。...import Blog    #Blog模型管理器 @admin.register(Blog) class BlogAdmin(admin.ModelAdmin):     #listdisplay设置要显示列表中字段...唯一区别就是 这种方法 是登录http://ip/admin/  站点和用户组在一起 ? 而第一种方法是分开。 5.通过当前登录用户过滤显示数据 官方文档介绍: ?...4.设置只读字段  使用admin时候,ModelAdmin默认对于model操作只有增加,修改和删除,但是总是有些字段是不希望用户来编辑。...7.对单条数据 显示样式修改  需求如下: ? 每条数据都有 个确认标识(上图红框中),如果已经确认,用户再点击进入查看信息时候全部只读显示,即不能在做修改,如果没确认可以修改。

    2.6K70

    37.Django1.11.6文档

    另一个方面,GET 适合网页搜索这样表单,因为这种表示一个GET 请求URL 可以很容易地作为书签、分享和重新提交。 Django表单中角色 处理表单是一件很复杂事情。...Django更改1.10: 旧版本中,这是一种方法。 使用它作为方法向后兼容性支持将在Django 2.0中被删除。 username_validator Django新功能1.10。..., 'state'), } fields 能够包含定义readonly_fields 中显示作为只读....ModelAdmin.get_readonly_fields(request, obj=None) list方法添加表单上给予tuple和obj(或HttpRequest),希望返回将以只读形式显示字段名称...预期将返回更改列表上将链接到更改视图字段名称tuple或list或None,如上所述ModelAdmin.list_display_links部分中。

    24.3K80

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

    第十一章、学员报名流程开发 11.1.面包屑制作 Boorstrap路径导航条  (1)table_obj_list.html页面面包屑 def table_obj_list 返回数据改成locals...,身份证信息,紧急联络人,性别 有些字段只读,填写信息时候不能修改,因为如果设置了只读(添加属性disabled=true),提交时候会报这些字段为空,导致提交错误 所以在前段添加了js代码,BeforeFormSubmit...  提交前去掉disable=true(因为数据库中有默认值,提交时候就不会报错) 防止用户通过前端改html代码方式改只读字段信息,所以form.py里面添加了一个自定义验证方法(clean...),如果只读字段提交时候信息跟数据库中默认不一样,就报错 (1)crm/urls.py # crm/urls.py from django.conf.urls import url,include...__new__(cls) #只读字段不让用户通过浏览器改html代码方式改 def clean(self): # 表单级别的错误 if self.errors

    99000

    django 自带 user 字段扩展及头像上传

    写接口(入门篇)》 《用django写接口(优化篇)》 《用django写接口(实战篇)》 1 扩展 django User Model 字段 实际项目中,django 自带 user model...做些设置 from django.contrib import admin from django.contrib.auth.admin import UserAdmin from django.contrib.auth.models...[your_user_model_name]' # 例如我这边设置值为 'expert.User' admin 中,我们按照之前方法照常设置就行 这种方法,需要在我们做数据库迁移之前,先定义好我们自己...这种方法适合只需要扩展 User Model 中字段,会继承之前 AbstractUser 全部字段,系统自带 User 也是通过继承 AbstractUser 来实现 # 系统 User 源码...user 很多字段都不符合项目的需要,基本上需要完全替换,那目前提到种方法都不适合,需要通过第三种方法来替换 3.

    2.1K30

    Django | 开发】面试招聘信息网站(处理产品细节和权限&美化页面样式)

    文章目录 一、产品细节完善 1) 设置站点标题,项目目录下`url.py`加上如下代码 2) 填写信息显示提示 3) 将面试官与候选人关联 4)设置面试官只读权限 5) 设置面试官可直接在列表修改面试官...二、样式美化 1) 美化admin后台 2)美化页面 一、产品细节完善 1) 设置站点标题,项目目录下url.py加上如下代码 from django.utils.translation import...此方法会涉及到数据迁移,此时更改数据结构可能会报错) 方法二 (推荐) 保留或者删除原有字段(建议删除,如果删除admin.py显示字段list_play也要修改),然后添加新字段做外键引用 ·...该用户所在群组 group_name = self.get_group_name(request.user) # 如果其为面试官,则返回只读字段 if 'interviewer' in group_name...return ('',) # 返回值必须是可迭代对象 , 不能返回空 面试官只读 5) 设置面试官可直接在列表修改面试官 目前django没有对应方法get_list_editable,

    51510

    Python:Django框架

    中,视图(view)对 WEB 请求进行回应,视图就是一个 Python 函数,被定义 views.py 中 视图接收 reqeust 对象作为第一个参数,包含了请求信息 from django.http...unique boolean值,True=该字段值必须唯一 verbose_name string类型。设置该字段另一个名字 validators 有效性检查。...widget : 字段控件 label : 字段html中显示标签 initial : 初始字段中显示值 help_text: 字段后面显示定义帮助文档 error_messages :...']#列表页显示条目 list_editable = ['icon'] #列表页即可修改 利用django.utils.html转义实现图片预览 1.model.py中定义图片预览函数...readonly_fields = (‘cover_preview’,)#只读字段,添加该字段才能在后台编辑页预览封面,否则报错 fieldsets = ( #后台文章编辑页面排版

    4.4K40

    Django 3.1 官网学习路线

    您将在 Python 代码中使用此值,数据库将使用它作为列名。 可以对字段使用可选第一个位置参数来指定我们可读名称。它在 Django 几个内省部分中使用,同时也用作文档。...不同模型字段类型(DateTimeField、CharField)对应于适当 HTML 输入小部件。每种类型字段都知道如何在 Django 管理中显示自己。...页面的底部提供了几个选项: 保存-保存更改并返回此类型对象更改列表页。 保存并继续编辑——保存更改并重新加载此对象管理页面。 保存并添加另一个——保存更改并为这种类型对象加载一个新空白表单。...刚刚创建模板目录中,创建另一个名为 polls 目录,并在该目录中创建一个名为 index.html 文件。...render()函数将请求对象作为第一个参数,将模板名称作为第二个参数,将字典作为可选第三个参数。它返回使用给定上下文呈现给定模板 HttpResponse 对象。

    8.2K10

    Django 1.10中文文档-第一个应用Part7-自定义管理站点

    你可以注册时通过配置来实现。 现在先来试试重新排序表单上字段。...并且字段数据很多时,还可以将表单分割成多个字段集合: # polls/admin.py from django.contrib import admin from .models import Question...如果我们想要同时显示一些别的内容,可以使用list_display属性,它是一个由多个字段组成元组,其中每一个字段都会按顺序显示页面上,代码如下: # polls/admin.py class...接下来,刚才创建templates中创建一个admin目录,将admin/base_site.html模板文件拷贝到该目录内。...当Django渲染admin/base_site.html时候,这个模板语言将被生成最终html页面,就像Part3中一样。 注意任何Django管理站点默认模板都可以重写。

    3.6K60

    Python自动化开发学习19-Djan

    ORM 连接sqlite数据库 默认使用是sqlite3作为数据库,使用数据库需要一下步骤 一、创建你数据库表结构 app目录下models.py文件就是用来写你表结构: from django.db...二、设置settings.py文件 INSTALLED_APPS 注册你app,把你app追加到这个列表里: INSTALLED_APPS = [ 'django.contrib.admin...这些字段类型只有在用Django后台管理页面 admin 时候才能发挥数据验证效果。只有通过admin提交数据时候才会验证你数据格式是否正确。...() # 但是我们admin里看选择框时候看到是“管理员”、“普通用户”、“访客”,这就是因为把选项所对应内容放到了内存中了 # 有了Django这个功能就不用再搞一张表,存放各个数值对应内容了...Admin中显示字段名称,默认显示为变量名 editable :Admin中是否可以编辑。

    1.4K30

    Python进阶34-Django 中间件

    view_func是Django即将使用视图函数。 (它是实际函数对象,而不是函数名称作为字符串。)...如果返回None,Django将继续处理这个请求,执行任何其他中间件process_view方法,然后执行相应视图。...)验证 HTTP Referer 字段 根据 HTTP 协议, HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求来源地址。...这样可以解决大部分请求,但是对于页面加载之后动态生成 html 代码,这种方法就没有作用,还需要程序员在编码时手动添加 token。...(3) HTTP 头中自定义属性并验证 这种方法也是使用 token 并进行验证,和上一种方法不同是,这里并不是把 token 以参数形式置于 HTTP 请求之中,而是把它放到

    1.8K20
    领券