作者:秘密不能说雨 | 来源:互联网 | 2023-08-07 16:46
本文由编程笔记#小编为大家整理,主要介绍了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,
这时候我们发现,自定义列中的标签写死了,我们希望访问每个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页面添加页码了。
我们直接将之前写的分页拿过来用,