Xadmin自定义detail小感叹号显示在列上面

1.修改源码

# 路径\xadmin\plugins\details.py
# 大概在18行左右
    def result_item(self, item, obj, field_name, row):

        if (self.show_all_rel_details or (field_name in self.show_detail_fields)):
            rel_obj = None
            if hasattr(item.field, ‘remote_field‘) and isinstance(item.field.remote_field, models.ManyToOneRel):
                rel_obj = getattr(obj, field_name)
            # =====================添加这一段===========================================
            elif hasattr(self.admin_view, ‘conf_show_detail_fields‘) and field_name in self.admin_view.conf_show_detail_fields:
                rel_obj = getattr(obj, self.admin_view.conf_show_detail_fields[field_name])
            # =====================添加结束===========================================
            elif field_name in self.show_detail_fields:
                rel_obj = obj

            if rel_obj:
                if rel_obj.__class__ in site._registry:
                    try:
                        model_admin = site._registry[rel_obj.__class__]
                        has_view_perm = model_admin(self.admin_view.request).has_view_permission(rel_obj)
                        has_change_perm = model_admin(self.admin_view.request).has_change_permission(rel_obj)
                    except:
                        has_view_perm = self.admin_view.has_model_perm(rel_obj.__class__, ‘view‘)
                        has_change_perm = self.has_model_perm(rel_obj.__class__, ‘change‘)
                else:
                    has_view_perm = self.admin_view.has_model_perm(rel_obj.__class__, ‘view‘)
                    has_change_perm = self.has_model_perm(rel_obj.__class__, ‘change‘)

            if rel_obj and has_view_perm:
                opts = rel_obj._meta
                try:
                    item_res_uri = reverse(
                        ‘%s:%s_%s_detail‘ % (self.admin_site.app_name,
                                             opts.app_label, opts.model_name),
                        args=(getattr(rel_obj, opts.pk.attname),))
                    if item_res_uri:
                        if has_change_perm:
                            edit_url = reverse(
                                ‘%s:%s_%s_change‘ % (self.admin_site.app_name, opts.app_label, opts.model_name),
                                args=(getattr(rel_obj, opts.pk.attname),))
                        else:
                            edit_url = ‘‘
                        item.btns.append(
                            ‘<a data-res-uri="%s" data-edit-uri="%s" class="details-handler" rel="tooltip" title="%s"><i class="fa fa-info-circle"></i></a>‘
                            % (item_res_uri, edit_url, _(u‘Details of %s‘) % str(rel_obj)))
                except NoReverseMatch:
                    pass

        return item

2.在注册类中添加配置

# 配置当前字段显示哪个关联字段
# partner_sku 要显示感叹号的列
# inside_sku 要显示详情的列
conf_show_detail_fields = {‘partner_sku‘: ‘inside_sku‘}

原文地址:https://www.cnblogs.com/wtil/p/12627877.html

时间: 2024-10-22 14:36:36

Xadmin自定义detail小感叹号显示在列上面的相关文章

jaspersoft studio colunm header and detail ,detail中显示多列数据

column header 中的属性与detail中的属性是一对多的时候,如何使detail中能正常的显示多列数据 1.1 将column header中的属性与detail中的属性放在同一个对象中,然后根据在将对象放在一个list集合中,如果detail中的数据是有多个,则list中也有多个对象,再将list数据填充到report模板中. Noted: 如果出现了分页,是因为模板高度不够导致不能在一个页面中显示所有的数据,所以才会分页显示.而且此时的分页显示 column的值都是相同的,而de

Dojo学习笔记(二十一):创建自定义Dojo小部件

在这个教程中,我们将会演示如何利用Dojo 和Dijit框架来创建自定义的小部件,主要会使用到dijit/_WidgetBase and dijit/_TemplatedMixin. Dojo的Dijit 库包含了丰富的界面小部件(Widgets),通过使用这些小部件,可以打造出强大的Web应用界面,从高级的表单元素,到复杂页面布局. 假设我们需要开发一个能展示所有Dojo教程作者的简介信息的页面,我们手头的数据源是如下的JSON数据: [     {         "name": 

码农福利,自定义微博小尾巴,闪瞎他们的双眼

自从王思聪发布了那条小尾巴是iphone6的微博之后,引起了无数人的跟风,大家争先恐后的把自己的小尾巴改成iphone6.但是好景不长,新浪就把这个方法给和谐了. 被“无情”和谐掉的小尾巴是通过“网页发布窗”来实现的,可手动设置app_url(也就是每个型号手机对应的key),用这种方法可以自行修改微博的小尾巴.而本文我来分享下基于iOS平台APP实现自定义修改微博小尾巴. 建议先下载源码(点击此处下载) 注:此源码是基于iOS的,但实现方法.相应接口和数据都是通用的,接口是新浪的,但是什么时候

Silverlight中DataGrid的显示指定列、修改默认列名和格式化日期数据和小数数据

一:DataGrid的显示指定列.修改默认列名 使用自动生成列,就会无区别的按缺省格式展示所有项目.除了bit类型,其他类型项目会以字符串形式展现. 通过设置Columns属性,可以选择性的显示列,以及显示的样式.在这里,我把Category,Supplier,Product和对应的ID去掉,指定显示的列: <sdk:DataGrid Name="dataGrid" AutoGenerateColumns="False" Margin="12&quo

Android 自定义圆圈进度并显示百分比例控件(纯代码实现)

首先,感谢公司能给我闲暇的时间,来稳固我的技术,让我不断的去探索研究,在此不胜感激. 先不说实现功能,上图看看效果 这个是续上一次水平变色进度条的有一个全新的控件,理论实现原理 1.分析控件:该控件基本上是圆圈内嵌圆圈: 2.进度计算:其实是小学二年级数学题:当前进度/总数=百分比: 3.中间时间:呵呵,纯粹忽悠,不解释(当前时间). 理论总是和实践差距的太远,不扯淡,不吹嘘,贴代码: package com.spring.progressview; import java.text.Simpl

sql不显示重复列

在报表里,基本上都可以把重复的资料不显示,在SQL里怎么才能做到如下情况呢? a 10 a 20 b 30 b 40 b 50 显示为: a 10 20 b 30 40 50 SQL 如下: create table #a (part varchar(10),price int) go insert into #a values('a',10) insert into #a values('a',20) insert into #a values('b',30) insert into #a v

针对 jQuery Gridly 控件显示多少列的问题。

针对 jQuery Gridly 控件显示多少列的问题,完全根据 columns 的值来显示. 但是显示columns,并不是给多少值显示几列.到目前还是很模糊的.官方文档没有给出具体的一个解释. $('.gridly').gridly({ base: 60, // px gutter: 20, // px columns: $("#FormColumnCount").val() * 3, callbacks: { reordered: function ($elements) { /

Easyui datagrid 显示隐藏列

html: <div style="float: left; width: 1450px; height:auto;  "> <table id="List" class="easyui-datagrid" title="基站信息列表" width="1450px" style="height:580px;" data-options="rownumbers:

winform datagridview 不显示默认第一列 不显示未绑定列 数据源发生改变时自动更新 (转)

不显示带星号的第一列: datagridview属性框中将 RowHeadersVisiber 设置为  false 不显示未绑定列: datagridview有一个属性是 AutoGenerateColumns.但是让人不理解的是这个属性不在属性框中,因此你在那里找不到它.只能在后台代码中进行设置. this.datagridview1.AutoGenerateColumns  = false; 数据源发生改变时自动更新: datagridview的数据源在页面操作的过程中经常会发生变化.我们