热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:django中的admin组件之自定义组件的增删改查的完善

本文由编程笔记#小编为大家整理,主要介绍了django中的admin组件之自定义组件的增删改查的完善相关的知识,希望对你有一定的参考价值。昨天我们将自定义列放在类我们自定义的B
本文由编程笔记#小编为大家整理,主要介绍了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("编辑"%obj.pk)
def delete(self,obj=None,is_header=False):
if is_header:
return 操作
else:
return mark_safe("删除" % obj.pk)
def check_box(self, obj=None, is_header=False):
if is_header:
return 操作
else:
return mark_safe("" % 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

技术分享图片

在页面中渲染:


html>
"en">

"UTF-8">

"stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.css">
"stylesheet" href="/static/css/form.css">


class="container">

添加数据


class="row">
class="col-md-6 col-md-offset-3">
"" method="post" novalidate class="form-horizontal">
{
% csrf_token %}
{
% for field in form %}
class="form-group">

{{ field }}
class="errors pull-right" color: #800000">"color:red">{{ field.errors.0 }}


{
% endfor %}







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

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

技术分享图片

 











推荐阅读
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 第一种&amp;amp;lt;script&amp;amp;gt;$(&amp;quot;.eq&amp;quot;).on(&amp;qu ... [详细]
  • 本文内容皆为作者原创,如需转载,请注明出处:https:www.cnblogs.comxuexianqip13045462.html1.自定义分页器的拷贝及使用当我们需要使用 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文详细介绍了在ASP.NET中获取插入记录的ID的几种方法,包括使用SCOPE_IDENTITY()和IDENT_CURRENT()函数,以及通过ExecuteReader方法执行SQL语句获取ID的步骤。同时,还提供了使用这些方法的示例代码和注意事项。对于需要获取表中最后一个插入操作所产生的ID或马上使用刚插入的新记录ID的开发者来说,本文提供了一些有用的技巧和建议。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • python3 logging
    python3logginghttps:docs.python.org3.5librarylogging.html,先3.5是因为我当前的python版本是3.5之所 ... [详细]
  • document .ready中的函数怎么被按钮调用? ... [详细]
  • 结合“性能监视器”排查、处理性能瓶颈导致应用吞吐率等指标上不去的问题
    双11备战前夕,总绕不过性能压测环节,TPS一直上不去不达标,除了代码上的问题外,服务器环境、配置、网络、磁盘、CPU亦是导致性能瓶颈的重要一环,本文旨在分享最近项目性能 ... [详细]
author-avatar
秘密不能说雨
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有