前情提要: 

  接着上一节的.stark自创组件的展示效果编写

   展示数据

  一:按照默认自带数据展示

    即无一对一,一对多

    1:先获取queryset对象

  

      2:获取当前操作模型表对象数据

    注意:list_display 为元祖,这样如果默认样式的时候会反射第一个索引所在的位置即

  "__str__"

    2>1视图层

     2>2数据展示结果

 

     2>3前端:

 

 

 

 

二:按照一对多展示

即一对多publish 展示

1:展示模型关系

2:在自定配置类中增加一对多内容,正向按照字段

 3:前端效果

 三:多对多显示

知识补充:

展示模型类对象

使用名字访问一个model的实例

模型名._meta.get_field("publish") 

 

展示模型类对象名字

 

展示模型类对象app名字

 

 

展示默认名称

如果没有设置,则展示本身的属性名

 

 

 

如果展示了则显示设置的名字,注意此处设置了verbose 名字

 

 

 

 1:前端反射默认方法

如果没有参数则不需要加括号

默认的配置__str__()方法,前端可以不用加括号直接显示

2:判断如果是多对多怎么处理内容

普通属性从self.list._display中拿取的是字符串

一对多,多对多的拿取出来的是对象

导入包 判断拿出的对象是否为manytomanyfiled类型

 

 设置当为多对多的时候.抛出错误,多对多的时候需要,自定制列

 

 

 3:判断字段是否为chiose字段

 

 

 

 4:由于没有__str__ 属性

 

field_obj = self.model._meta.get_field(field_or_func) #获取模型对象 
这句话,获取的是对象的字段属性,,但是其中没有没有

 

 

 

这段可能是错误的!!! 

try..except 和raise 冲突

这么写不对

 

 5: 自定制列展示多对多字段

知识点:

callable  判断是否为可调用的(函数和类可以调用)

直接把自定制函数扔到dis_play中

stites中放获取返回值,然后加入到列表中传到前端

 

 

 

这里的self 是类函数调用的方式.,因为原来类中需要穿参,现在增加一个参数而已,什么都行.但是最好是self

 

 

 6:处理多对多内容

6>1: 在callable 内容中传入obj对象,方便操作数据

6>2:在自定制配置类中,通过obj 获取对应的作者信息

 

 

 四:设置表头内容  

1:如果是普通属性,非定制列 ,即只有 __str__

 

传出的是表明的大写 

2:如果是普通属性,定制列  ,接收其他非属性多对多属性

3:如果是多对多,定制列,接收多对多函数

 

 4 注册表书写:

  

五:设置编辑,删除,以及选择按钮增加到默认配置类

1:

  设置展示自定制函数在stites中

注意导入safe包

 

该包,可以是后台传入的标签内容不会被转化,直接成为前端代码

from django.utils.safestring import mark_safe

 其中删除和编辑的代码需要用到反向解析.

先导入包:

定义类名和表明

 

视图层设置反向解析name

 

反向解析代码

        # 反向解析当前访问表的增删改查URL

    def get_list_url(self):
# 反向解析当前表的删除的URL
list_url = reverse("%s_%s_list" % (self.app_label, self.model_name))
return list_url def get_add_url(self, obj):
# 反向解析当前表的删除的URL
add_url = reverse("%s_%s_delete" % (self.app_label, self.model_name))
return add_url def get_delete_url(self, obj):
# 反向解析当前表的删除的URL
delete_url = reverse("%s_%s_delete" % (self.app_label, self.model_name), args=(obj.pk,))
return delete_url def get_change_url(self, obj):
# 反向解析当前表的删除的URL
change_url = reverse("%s_%s_change" % (self.app_label, self.model_name), args=(obj.pk,))
return change_url

分析:方向解析名字为app名加表明  利用的是无名分组,注意无名分组为元祖传参

 def show_checkbox(self,obj=None,header=False):
#展示选择列
if header:
return mark_safe("<input type='checkbox'>")
return mark_safe("<input type='checkbox'>")
def show_delbtn(self,obj=None,header=False):
if header:
return "删除" return mark_safe("<a href='%s'>删除</a>" % self.get_delete_url(obj))
def show_editbtn(self,obj=None,header=False):
if header:
return "编辑"
return mark_safe("<a href='%s'>编辑</a>" % self.get_change_url(obj))

 

属性说明:

self 为当前操作的模型配置类

obj=None 让默认对象的值为None,即当代用抬头的时候不用传值

header=False  让默认的header 为False ,使调用数据的时候不用传值,且 不反回抬头,只返回数据

 

 获取表头中,是header =true 这样可以获取表头数据内容

 

2: 如果想在默认配置类中,直接展示

 则需要在定义一个函数,把内容加入到自定制的list_display中

 

 2 >1 :注意,现在所有调用list_display 的都需要换成该函数

 

 

 

效果图:

点击去也可以实现

day 66 crm(3) 自创组件stark界面展示数据的更多相关文章

  1. C#调用NPOI组件读取excel表格数据转为datatable写入word表格中并向word中插入图片/文字/书签 获得书签列表

    调用word的com组件将400条数据导入word表格中耗时10分钟简直不能忍受,使用NPOI组件耗时4秒钟.但是NPOI中替换书签内容的功能不知道是不支持还是没找到. 辅助类 Excel表格数据与D ...

  2. 图像处理工具包ImagXpress教程:Accusoft不同组件间的图像数据传递

    图像处理工具包ImagXpress的开发厂商Accusoft Pegasus旗下有多种图像处理相关的控件,但是这些图像处理控件之间的如何加传递图像数据呢?在ImagXpress 11版本之前,是需要将 ...

  3. vue的组件化运用(数据在两个组件互传,小问题总结)

    一.vue的组件化应用 首先,知道有哪些相关的属性需要用到,再慢慢去理解,运用. 1.两个vue页面 2. slot占位符(可用可不用) 3.props内置属性 4.watch监听函数 5.impor ...

  4. Vue 父组件ajax异步更新数据,子组件props获取不到

    转载 https://blog.csdn.net/d295968572/article/details/80810349 当父组件 axjos 获取数据,子组件使用 props 接收数据时,执行 mo ...

  5. EasyUI的treegrid组件动态加载数据问题的解决办法

    http://www.jquerycn.cn/a_3455 —————————————————————————————————————————————————————————————————————— ...

  6. 关于Vue中,在方法中使用(操作)子组件获取到的数据

    已知,子组件通过props获取父组件传过来的数据,而这个数据是无法在created.mounted生命周期中使用的,只能在beforeUpdated或者updated获取到: 但是如果我们要使用这个数 ...

  7. Vue--vue中的组件、组件绑定事件和数据、私有组件、子组件,父子组件参数互传

    一.公有组件以及组件的使用和特点 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...

  8. Vue 组件中的data数据

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. Vue父子组件通信(父级向子级传递数据、子级向父级传递数据、Vue父子组件存储到data数据的访问)

    Vue父子组件通信(父级向子级传递数据.子级向父级传递数据.Vue父子组件存储到data数据的访问) 一.父级向子级传递数据[Prop]: ● Prop:子组件在自身标签上,使用自定义的属性来接收外界 ...

随机推荐

  1. pca总结,非常详细

    #coding=utf- from numpy import * '''通过方差的百分比来计算将数据降到多少维是比较合适的, 函数传入的参数是特征值和百分比percentage,返回需要降到的维度数n ...

  2. 20155213 2016-2017-2 《Java程序设计》第八周学习总结

    20155213 2016-2017-2 <Java程序设计>第八周学习总结 教材学习内容总结 第十四章NIO与NIO2 NIO NIO使用频道来衔接数据节点,在处理数据时,NIO可以让你 ...

  3. jquery datables ajax分页后的点击事件无效是怎么回事

    异步请求数据后,动态向table中追加行,行点击事件失效 动态加入到DOM中的对象无法继承原有的事件,所以无效,举例: // $.ajax... ajax部分省略 var tr = "&qu ...

  4. 2018.07.29~30 uoj#170. Picks loves segment tree VIII(线段树)

    传送门 线段树好题. 维护区间取两种最值,区间加,求区间两种历史最值,区间最小值. 自己的写法调了一个晚上+一个上午+一个下午+一个晚上并没有调出来,90" role="prese ...

  5. Django入门与实践-第25章:Markdown 支持(完结)

    http://127.0.0.1:8000/boards/1/topics/102/reply/ 让我们在文本区域添加 Markdown 支持来改善用户体验. 你会看到要实现这个功能非常简单. 首先, ...

  6. DevExpress gridcontrol Master-Detail绑定到对象类型

    数据库:C_ProductPlan ,C_ProductPlanItemDTO定义:(实现每个计划条目-Master,对应多个ProcessInfo-Detail) [DataContract] [S ...

  7. centos6.5(64位)离线安装scalr

    1.下载scalr-server安装备包: 下载地址:http://pan.baidu.com/s/1eSA3dom scalr-server-5.1.0.oss-nightly.2015013004 ...

  8. s28 LNMP架构服务搭建

    nginx-location使用 location语法 location使用的语法例子为: location [=|~|~*|^~] uri{ 对location语法列表说明. |1ocation | ...

  9. http://localhost:8080/hello?wsdl

    <definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-u ...

  10. Node开发文件上传系统及向七牛云存储和亚马逊AWS S3的文件上传

    背景起,有奏乐: 有伟人曰:学习技能的最好途径莫过于理论与实践相结合. 初学Node这货时,每每读教程必会Fall asleep. 当真要开发系统时,顿觉精神百倍,即便踩坑无数也不失斗志. 因为同团队 ...