首页 > 其他分享 >Django Admin SimpleUI 自定义列

Django Admin SimpleUI 自定义列

时间:2023-04-14 10:44:21浏览次数:46  
标签:obj name 自定义 Admin js admin SimpleUI display

Django Admin SimpleUI的一些简单用法 注意事项:自定义列会遍历所有取出来的数据,需注意

先定义下模型

#models.py

class Dog(models.Model):
    name = models.CharField(max_length=15, verbose_name='小狗名字')
    age = models.IntegerField(verbose_name='小狗年龄', default=0)
    # settings已经设置过 MEDIA_ROOT 和 MEDIR_URL
    icon = models.ImageField(upload_to='icon/', verbose_name='小狗头像')

    class Meta:
        db_table = 'tb_dog'
        verbose_name = '狗狗'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name

Admin设置

from django.utils.safestring import mark_safe

@admin.register(Dog)
class DogAdmin(admin.ModelAdmin):
    list_display = ('img', 'name', 'age', 'operate')
    list_display_links = ('name',)

    # 在list页面显示头像
    @admin.display(description='头像', ordering='name')
    def img(self, obj):
        div = f"<img src='{obj.icon.url}' width='32px'>"
        return mark_safe(div)

    # 定义一些操作示例
    @admin.display(description='操作', ordering='name')
    def operate(self, obj):
        info_msg = f'这条狗的名字是:{obj.name} 年龄是:{obj.age}'
        # simpleui 用的elementui ,可以使用el的类修改默认样式
        btn1 = f"""<button onclick="self.parent.app.$msgbox('{info_msg}')"
                            class="el-button el-button--warning el-button--small">信息</button>"""
        # 在新标签中打开修改界面,url可以随意指定。自己可以多做尝试
        data = '{"name": "%s", "icon": "fas fa-user-tie", "url": "/admin/app1/dog/%d/change/"}' % (obj.name, obj.pk)
        btn2 = f"""<button onclick='self.parent.app.openTab({data})'
                             class='el-button el-button--danger el-button--small'>新标签</button>"""
        return mark_safe(f"<div>{btn1} {btn2}</div>")

成果


进阶用法,挂载自定义js,实现自定义功能

在admin类里面挂载自定义js

@admin.register(Dog)
class DogAdmin(admin.ModelAdmin):
    list_display = ('img', 'name', 'age', 'operate')
    list_display_links = ('name',)

    # 在list页面显示头像
    @admin.display(description='头像', ordering='name')
    def img(self, obj):
        # 在custom.js里面实现了show_pic函数,onclick进行调用
        div = f"""<img id='icon_{obj.id}' src='{obj.icon.url}' 
        width='32px' onclick='show_pic("{obj.icon.url})"' />"""
        return mark_safe(div)
    # 挂载自定义的js,css也可以挂,可以挂载本地文件,也可以挂载网络文件
    class Media:
        js = ('js/custom.js',
              #   也可以挂载cdn文件,这里仅示例
              #  'https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js',
             )

static/js/custom.js 的函数

function show_pic(icon_url) {
    let msg_html = `<img src="${icon_url}" width="400px" />`
    // $alert接收3个参数,data,title,options
    // options使用案例可以参考https://element.eleme.cn/#/zh-CN/component/message-box#options
    self.parent.app.$alert(msg_html, '这里是title', {
        dangerouslyUseHTMLString: true
    })
}

这样就实现了点击头像展开大图的功能了,也可以通过挂载js扩展更多django admin的功能。

Vue挂载的一些东西实例

标签:obj,name,自定义,Admin,js,admin,SimpleUI,display
From: https://www.cnblogs.com/superip/p/17317599.html

相关文章

  • django admin 使用SimpleUI自定义按钮弹窗框示例
    actions=['button_exeScript',]defbutton_exeScript(self,request,queryset):passbutton_exeScript.layer={#弹出层中的输入框配置#这里指定对话框的标题'title':'弹出层输入框',#提示信息......
  • SpringBoot 自定义对象映射器的使用
    SpringBoot底层默认使用Jackson进行Java实体对象与Json之间的转换,有时转换的效果并不是我们所期望的,需要进行额外的处理工作,有经验的小伙伴们,肯定遇到过下面两种典型的情况:当对象的属性是日期类型时,转换成json后的结果并不是我们想要的效果,还需要我们额外进行显示格式......
  • 66、K8S-部署管理-Helm-自定义helm项目
    1、自定义helm项目管理-实践1.1、自定义helm项目1.1.1、创建存放的目录mkdir-p/opt/custom_helm&&cd/opt/custom_helm1.1.2、创建helm项目helmcreatenginx1.2.3、目录的解析custom_helm]#treenginx/nginx/-自动生成的空ch......
  • 详解Django admin高级用法
    Django后台admin有大量的属性和方法,拥有强大的功能和自定义能力.通过完整的代码来看Djangoadmin的基础设置和高级用法,并结合form表单来实现深度自定义.简单使用如果只是使用admin自带的数据管理功能,只需要将模型注册到admin中,就可以实现.fromdjango.contribimportadmi......
  • django admin 自定义添加单独行 增加数据统计功能
    需求:需要在某个页面单独增加一行,以便统计这一行的金额进行汇总显示,具体操作如下不建议直接修改change_list.html,所以扩展template admin.py中对应的admin.ModelAdmin中添加:#1.如果你改了template的名称,这里可以对应修改,否则默认即可change_list_template='admin/chang......
  • django 1.8 官方文档翻译: 6-4-2 编写自定义的django-admin命令
    编写自定义的django-admin命令应用可以通过manage.py注册它们自己的动作。例如,你可能想为你正在发布的Django应用添加一个manage.py动作。在本页文档中,我们将为教程中的polls应用构建一个自定义的closepoll命令。要做到这点,只需向该应用添加一个management/commands目录。Django......
  • django 1.8 官方文档翻译: 2-5-7 自定义查找
    自定义查找NewinDjango1.7.Django为过滤提供了大量的内建的查找(例如,exact和icontains)。这篇文档阐述了如何编写自定义查找,以及如何修改现存查找的功能。关于查找的API参考,详见查找API参考。一个简单的查找示例让我们从一个简单的自定义查找开始。我们会编写一个自定义查找ne,提供......
  • Cesium的搜索框如何自定义功能
    geocoder提供了地理编码功能用来搜索位置,但是在离线环境下无法使用。为了将这个搜索框用起来,添加根据坐标搜索的功能,可以这么写:viewer.geocoder._form.children[0].placeholder="请输入:经度,纬度";viewer.geocoder.autoComplete=false;functionmyGeocoder(){......
  • WPF 自定义控件 二次渲染 问题记录
    问题将多个自定义控件加载到到一个页面的Grid上显示。然后突然将一个控件从Grid里面清除,控件依然在后台处理数据。过段时间再加入Grid。然后一些已经改变的页面属性就消失了。原因经过查找是一旦控件再次加载,页面属性就会重置。这个有利也有弊端。1是可以利用这点重置页面2......
  • linux系统自定义登录提示信息
    配置说明这里对于centos7.x系统,可以直接编辑/etc/motd文件,增加定制的提示信息,并可以通过不同颜色展示。vim/etc/motd^[[32m设备IP地址:10.10.10.22^[[0m^[[32m使用人员:zhangshan^[[0m^[[31m注意:其它人员使用请和使用人确认^[[0m#注意,如果需要增加展示信息,可以......