django中的admin组件之自定义组件的增删改查的完善

昨天我们将自定义列放在类我们自定义的Bookconfig配置类内,但是这样就写死了,因为当我们访问publish表的时候应该也有这样的自定义列,所以我们应该将我们的自定义列放在默认的配置表里面。应该怎么做?

 当我们的自定义列挪到默认配置类的时候,我们自定义配置类中的list_display就要发生改动,

list_display = ["title", "price", "publish",'authors','publishDate',sites.ModelAdmin.edit,sites.ModelAdmin.delete]

而在默认配置类中,往list_display添加edit,delete。list_display = ['__str__',edit,delete]。这样写会很麻烦。

我们有这样一个办法,在默认配置类中,我们新构建一个列表,然后把我们自定义配置类的list_display添加到这个新列表中,并且把edit,和delete也添加进去,这样在循环新的list-display的时候,既能实现到自己配置类中的list_display,也能实现默认配置类中的list_display,

 

 # 默认操作函数def edit(self,obj=None,is_header=False):if is_header:   #  如果传过来的参数is_header=true则说明是表头部分return '操作'else:       # 如果传过来的参数为obj,则说明是表单部分return mark_safe("<a href='/stark/app01/book/%s/change/'>编辑</a>"%obj.pk)def delete(self,obj=None,is_header=False):if is_header:return '操作'else:return mark_safe("<a href='/stark/app01/book/%s/delete/'>删除</a>" % obj.pk)def check_box(self, obj=None, is_header=False):if is_header:return '操作'else:return mark_safe("<input type='checkbox'pk=%s>" % obj.pk)
#视图函数
def new_list_display(self):
temp=[]
temp.extend(self.list_display) # 把自己配置类中的list_display添加进去,
# 对于没有自定义配置类的model,就是用默认配置类的list_display 注意用的是extend
temp.insert(0,ModelAdmin.check_box) # 在最前面加ModelAdmin.check_box,不要写成self.check_box 这是个坑,一定不要写成self.check_box
                        # 如果写成了self.edit,
说明已经在edit这个方法中传了参数self,在调用的时候,就不需要传self这个参数了
temp.append(ModelAdmin.edit)
temp.append(ModelAdmin.delete)
return temp

 

这时候我们发现,自定义列中的标签写死了,我们希望访问每个model都有这个自定义操作列。

这时候我们想到url的反向解析。

拿一个操作来说,在url中起好name,利用revers反向解析url。替换a标签的href。

写成函数之后,就变成这样:

 

接下来就是利用ModelForm对数据进行操作了。(复习ModelForm知识.)

我们发现,不仅在添加视图函数中用到modelform,在编辑,甚至删除的试图中也用到modelform。所以可以写成函数。

在app01下的stark.py文件下可以写自己的model form

在页面中渲染:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>添加数据</title><link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.css"><link rel="stylesheet" href="/static/css/form.css">
</head>
<body>
<div class="container"><h3>添加数据</h3><div class="row"><div class="col-md-6 col-md-offset-3"><form action="" method="post" novalidate class="form-horizontal">{% csrf_token %}{% for field in form %}<div class="form-group"><label for="" class="col-sm-2 control-label">{{ field.label }}</label>{{ field }}<div><span class="errors pull-right" style="color:red">{{ field.errors.0 }}</span></div></div>{% endfor %}<button class="btn btn-default">提交</button></form></div></div>
</div>
</body>
</html>

接下来就是给list页面添加页码了。

 我们直接将之前写的分页拿过来用,

 

转载于:https://www.cnblogs.com/yb635238477/p/9562969.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465034.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“制造商和技术支持商”

1.用优化工具。 2.system32中的OEMINFO.ini和OEMLOGO.bmp文件 转载于:https://blog.51cto.com/honglingjin2011/537680

青春是一列不再回头的火车…

高中那年&#xff0c;我表姐对我说&#xff1a;“不要老想着出去打工赚钱&#xff0c;好好读书&#xff0c;将来肯定有用&#xff0c;也不要想着现在日子长得很&#xff0c;等你像我这样结婚生子后&#xff0c;一天一眨眼就过完了。”当时听了没有多大感觉&#xff0c;如今深以…

我和周立功的聊天

算起来&#xff0c;我和周工认识也有7年了&#xff0c;7年前我在中兴&#xff0c;偶然一次加了周工的微信&#xff0c;有一次年末&#xff0c;周立功在推广他们的示波器&#xff0c;广哥拉我进周立功的示波器技术支持群微信群&#xff0c;说是周工要给大家发红包。那时候&#…

Python 37 进程池与线程池 、 协程

一&#xff1a;进程池与线程池 提交任务的两种方式&#xff1a; 1、同步调用&#xff1a;提交完一个任务之后&#xff0c;就在原地等待&#xff0c;等任务完完整整地运行完毕拿到结果后&#xff0c;再执行下一行代码&#xff0c;会导致任务是串行执行 2、异步调用&#xff1a;提…

在腾讯做嵌入式是怎么样的

昨天发朋友圈&#xff0c;是我帮忙同学拍的几张照片&#xff0c;自己觉得拍的不错&#xff0c;点赞的人还挺多的&#xff0c;就想着聊聊在腾讯做嵌入式软件开发的情况。我面试的BSP驱动开发工程师&#xff0c;入职后也从事这方面的事情&#xff0c;但是并不仅仅是BSP驱动。现在…

NFS无法启动根文件系统的解决

为了调试驱动&#xff0c;整了一天的NFS启动根文件系统出了各种问题&#xff0c;后来还是一一解决&#xff0c;不过还不太完美&#xff0c;因为不能使用交换机&#xff0c;我只能用PC和目标板直连&#xff0c;导致我上网很麻烦 无法挂载问题一&#xff1a; IP-Config: Cannot a…

聊聊身边的嵌入式,为什么老司机都爱后视镜

为什么老司机都爱后视镜有句话形容我们老司机的成长过程&#xff0c;叫&#xff1a;一年虎&#xff0c;二年狼&#xff0c;三年变成小绵羊。如果你不懂这句话的意思&#xff0c;证明你还不是一个合格的老司机。如果没和别人发生过亲(Gua)密(Ceng)接(Shi)触(Gu)&#xff0c;算得…

HDU 2187 悼念512汶川大地震遇难同胞——老人是真饿了

http://acm.hdu.edu.cn/showproblem.php?pid2187 Problem Description时间&#xff1a;2008年5月16日&#xff08;震后第4天&#xff09;地点&#xff1a;汶川县牛脑寨人物&#xff1a;羌族老奶奶【转载整理】牛脑寨是一个全村600多人的羌族寨子&#xff0c;震后几天&#xff…

第六次周赛

失望…… B题其实很简单&#xff0c;完全有能力出&#xff0c;我和luyi陷在我一个错误的树DP模型中…… 其实就是几个简单的组合数&#xff0c;谁可以都会的问题。 PROBLEM B 1 #include <iostream>2 #include <algorithm>3 #include <cstring>4 #include &l…

博主日常工作中使用的shell脚本分享

前言&#xff1a;今天给大家分享一篇在我工作中常用的一个shell脚本&#xff0c;里面有一些我们常用到的shell操作。该脚本用于本地电脑和服务器交互上&#xff0c;实现以下功能&#xff1a;自动拉取自己个人电脑上的源码到服务器上yocto包的源码文件夹。自动运行compile 、str…

JSON数据提取

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式&#xff0c;它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。JSON在数据交换中起到了一个载体的作用&#xff0c;承载着相互传递的数据。JSON适用于进行数据交互的场景&#xff0c;比如网站前…

陆奇给工程师们的5个建议

大家好&#xff0c;我是写代码的篮球球痴今天分享的文章是陆奇以前在百度一次内部演讲给工程师们提的5点要求&#xff0c;个人觉得对很多人非常有益&#xff0c;大家可以耐心一读。至于陆奇是谁&#xff0c;可以直接搜索&#xff0c;借微软CEO斯蒂芬鲍尔默对他的评价 : 陆奇集资…

每个电子工程师都埋藏着一颗游戏的心

在电子森林推文 700个字节的代码在ATtiny10里跑一个游戏[1] 介绍了一个 开源小游戏RunTiny[2] .用了&#xff1a;一个AVR单片机ATtiny10微控制器&#xff08;只有6个脚&#xff0c;Digikey上0.3美元一颗&#xff09;一个128*32的OLED显示屏一个按键一个电池 - 3.3V&#xff5e;…

Linux kernel 中模块化的平台驱动代码介绍

介绍在linux kernel中通过module_platform_driver来实现模块化平台驱动。大量的设备驱动程序都基于该种方式来实现&#xff0c;使用频次非常的高&#xff0c;在linux kernel 5.4.124的代码中搜索module_platform_driver共有2356次引用。这个宏的使用方式大相径庭&#xff0c;有…

这样给数组初始化,你肯定没有见过

今天在朋友圈看到一个朋友发的图片是给数组初始化的代码截图如下&#xff1a;我看到这个代码&#xff0c;也让我着实惊了一下&#xff0c;写代码这么久&#xff0c;也没有见过这样子初始化的。这个代码是出自海思的SDK里面的&#xff0c;华为的大牛还是很多啊&#xff0c;学习C…

CP命令引发的思考

转自&#xff1a;OSC开源社区今天同事用 cp 命令&#xff0c;把他给惊到了&#xff01;背景是这样的&#xff1a;他用 cp 拷贝了一个 100 G的文件&#xff0c;竟然一秒不到就拷贝完成了&#xff01;用 ls 看一把文件&#xff0c;显示文件确实是 100 G。sh-4.4# ls -lh -rw-r-…

C宏定义注意事项

1、带参数的宏与函数的优缺点 2、宏定义一个函数时&#xff0c;需要注意每个参数都需要用括号括起来。 如&#xff1a;#define Min(a,b) ((a)<(b)?(a):(b)) 3、宏定义一年中的秒数 #define SECONDE_OF_YEAR 606024365UL &#xff08;√&#xff09; #define SECONDE_OF_YE…

不要再来北上广深了

大家好&#xff0c;我是写代码的篮球球痴最近我们的一个离职群里面讨论一个问题&#xff0c;就是在北上广深工作的性价比问题&#xff0c;我有几个同事这样描述。一线城市确实会遇到一些机会&#xff0c;也有可能会遇到一些改变命运的机会。不过对于生活来说&#xff0c;一线城…

稚晖君教你制作全球最迷你的自平衡机器人

摘要&#xff1a;Nano是一个小巧可爱的机器人&#xff0c;身高大约10公分&#xff0c;特点是平衡感好&#xff0c;长得很白以及善于卖萌。作为全球最迷你的自平衡机器人&#xff0c;Nano身材虽小&#xff0c;但配置有丰富的传感器—陀螺仪&#xff0c;超声波&#xff0c;Motion…

ARM不同位数系统int字节数区别

32位和64位系统区别及int字节数 一&#xff09;64位系统和32位有什么区别&#xff1f; 1、64bit CPU拥有更大的寻址能力&#xff0c;最大支持到16GB内存&#xff0c;而32bit只支持4G内存 2、64位CPU一次可提取64位数据&#xff0c;比32位提高了一倍&#xff0c;理论上性能会…