django-23.admin列表页优化和排序

前言

列表页优化和排序

ModelAdmin

django的options.py里面 ModelAdmin类定义的参数可以设置admin后台列表页面,相关的参数如下

class ModelAdmin(BaseModelAdmin):
    """Encapsulate all admin options and functionality for a given model."""

    list_display = (‘__str__‘,)               # 显示的字段
    list_display_links = ()                    # 可点击的链接字段
    list_filter = ()                                   #  过滤器
    list_select_related = False
    list_per_page = 100                    # 每页显示100条
    list_max_show_all = 200
    list_editable = ()                         # 列表页 可编辑字段
    search_fields = ()                       #  搜索条件
    date_hierarchy = None             # 按时间分层
    save_as = False
    save_as_continue = True
    save_on_top = False
    paginator = Paginator
    preserve_filters = True
    inlines = []

排序字段

后台列表页面,如果想按某个字段排序,可以加个ordering参数,比如按创建时间(creat_time)降序
备注:ordering参数在BaseModelAdmin类里面,不在ModelAdmin类,ModelAdmin继承了BaseModelAdmin

修改admin.py文件内容,加个ordering参数,create_time字段前面的-表示按降序

class ControlArticle(admin.ModelAdmin):
    # 显示的字段
    list_display = (‘title‘, ‘body‘, ‘auth‘, ‘create_time‘, ‘update_time‘)
    # 搜索条件
    search_fields = (‘title‘,)

    # 按字段排序 -表示降序
    ordering = (‘-create_time‘,)

# 注册Article表
admin.site.register(models.Article, ControlArticle)

刷新页面后,就是按时间降序了

列表分页

列表页默认是设置的100个记录,我们也可以修改下设置成默认每页显示10个,设置list_per_page = 10

class ControlArticle(admin.ModelAdmin):
    # 显示的字段
    list_display = (‘title‘, ‘body‘, ‘auth‘, ‘create_time‘, ‘update_time‘)
    # 搜索条件
    search_fields = (‘title‘,)

    # 按字段排序 -表示降序
    ordering = (‘-create_time‘,)

    # 每页显示10条
    list_per_page = 10

# 注册Article表
admin.site.register(models.Article, ControlArticle)

设置默认可编辑字段

有些字段如果想在列表页就能直接编辑,可以加个list_editable参数,这样无需进子页面,可以直接编辑列表页上的字段
如果有多个参数设置,元组里面逗号隔开就行,如 list_editable = (‘body‘, ‘auth‘, )

class ControlArticle(admin.ModelAdmin):
    # 显示的字段
    list_display = (‘title‘, ‘body‘, ‘auth‘, ‘create_time‘, ‘update_time‘)
    # 搜索条件
    search_fields = (‘title‘,)

    # 按字段排序 -表示降序
    ordering = (‘-create_time‘,)

    # 每页显示10条
    list_per_page = 10

    # 可编辑字段
    list_editable = (‘auth‘,)

# 注册Article表
admin.site.register(models.Article, ControlArticle)

注意:title是默认的link链接字段,这个不能添加到 list_editable里面,否则会报错

编辑完之后点右下角的保存即可, 这个功能用处不大,了解下即可

link链接

列表页默认点第一个字段可进入编辑页面,如果我们想增加其它的字段也能点击进编辑页面,设置list_display_links = (‘title‘, ‘body‘)

class ControlArticle(admin.ModelAdmin):
    # 显示的字段
    list_display = (‘title‘, ‘body‘, ‘auth‘, ‘create_time‘, ‘update_time‘)
    # 搜索条件
    search_fields = (‘title‘,)

    # 按字段排序 -表示降序
    ordering = (‘-create_time‘,)

    # 每页显示10条
    list_per_page = 10

    # 可编辑字段
    list_editable = (‘auth‘,)

    # 设置哪些字段可以点击进入编辑界面
    list_display_links = (‘title‘, ‘body‘)

# 注册Article表
admin.site.register(models.Article, ControlArticle)

这样点标题和正文都能进编辑页面了

过滤器

如果想快速方便找到作者对应的文字,可以添加过滤器,显示到列表页面右边,如设置list_filter = (‘auth‘, ‘title‘)

class ControlArticle(admin.ModelAdmin):
    # 显示的字段
    list_display = (‘title‘, ‘body‘, ‘auth‘, ‘create_time‘, ‘update_time‘)
    # 搜索条件
    search_fields = (‘title‘,)

    # 按字段排序 -表示降序
    ordering = (‘-create_time‘,)

    # 每页显示10条
    list_per_page = 10

    # 可编辑字段
    list_editable = (‘auth‘,)

    # 设置哪些字段可以点击进入编辑界面
    list_display_links = (‘title‘, ‘body‘)

    # 过滤器
    list_filter = (‘auth‘, ‘title‘)

# 注册Article表
admin.site.register(models.Article, ControlArticle)

显示效果如下,点右侧作者名称,快速找到相关内容

按时间分层

date_hierarchy参数默认为None,设置一个时间字段,可以按时间分层删选

class ControlArticle(admin.ModelAdmin):
    # 显示的字段
    list_display = (‘title‘, ‘body‘, ‘auth‘, ‘create_time‘, ‘update_time‘)
    # 搜索条件
    search_fields = (‘title‘,)

    # 按字段排序 -表示降序
    ordering = (‘-create_time‘,)

    # 每页显示10条
    list_per_page = 10

    # 可编辑字段
    list_editable = (‘auth‘,)

    # 设置哪些字段可以点击进入编辑界面
    list_display_links = (‘title‘, ‘body‘)

    # 过滤器
    list_filter = (‘auth‘, ‘title‘)

    # 时间分层
    date_hierarchy = ‘create_time‘

# 注册Article表
admin.site.register(models.Article, ControlArticle)

原文地址:https://www.cnblogs.com/jason89/p/10359457.html

时间: 2024-10-11 01:09:36

django-23.admin列表页优化和排序的相关文章

python测试开发django-23.admin列表页优化和排序

前言 列表页优化和排序 ModelAdmin django的options.py里面 ModelAdmin类定义的参数可以设置admin后台列表页面,相关的参数如下 class ModelAdmin(BaseModelAdmin): """Encapsulate all admin options and functionality for a given model.""" list_display = ('__str__',) # 显示的字段

PHP.26-TP框架商城应用实例-后台2-商品列表页-搜索、翻页、排序

商品列表页 1.翻页 控制器GoodsController.class.php添加方法lst(),显示列表页 在商品模型GoodsModel.class.php类中添加search方法 /** *实现翻页.搜索.排序 * */ public function search($perPage = 5) //$perPage控制显示条数 { /***********翻页***********/ //取出总的记录数 $count = $this->count(); //生成翻页类的对象 $pageOb

h5列表页的性能优化

//0.还原状态 caoke.loading=false $(".loadbtn").text("点击加载更多") //1 还没有任何数据的情况 if(data.object.list.length==0){ //是否是第一页 if(data1.pageNo==1){ caoke.noneData1++ } caoke.nextPage() }else{ //2.有数据的情况 if(caoke.index==2&&data1.pageNo==1){

[django]详情页列表页

详情页列表页 列表页展示titile--这个模型的部分字段 详情页展示这个模型的所有字段 我想看下related_name这个从主表取子表数据 取数据--官网投票例子 https://docs.djangoproject.com/en/2.1/intro/tutorial02/ polls/models.py from django.db import models class Question(models.Model): question_text = models.CharField(ma

夺命雷公狗ThinkPHP项目之----企业网站23之网站前台二级分类的跳转(URL跳转到列表页或产品页)

我们现在开始做实现我们的二级菜单如何跳转到指定的列表页或者产品也呢?? 我们分享下数据库情况: 我们的数据库里提前给我们预留了一个cate_type的字段,那么我们可以让这个字段进行判断,从而遍历出指定的数据: 顶级栏目判断出结果后二级栏目也可以从而判断出结果........

dede列表页分页地址优化(不同url相同内容问题解决)<转自http://www.966266.com>

<注明,完全转自http://www.966266.com/seoblog/?p=75> 存在问题 DEDE默认分类分页地址存在不同URL相同内容问题,导致内容重复,对SEO非常不利.情况如下分页列表: <li><a href='list_4_1.html'>首页</a></li> <li><a href='list_4_3.html'>上一页</a></li> <li><a hr

django之admin组件

一.面向对象复习 1.类的继承 class Base(object): def __init__(self,val): self.val = val def func(self): self.test() print(self.val) def test(self): print("Base.test") class Foo(Base): def test(self): print("FOO.test") # def func(self): # print(self

04-商品列表页

一.前后端分离优缺点 优点: 1.由于pc.app.pad多端适应  2.SPA开发模式开始流行 3.前后端开发职责不清 4.开发效率问题,前后端相互等待 5.前端一直配合后端,能力有限 6.后台开发语言和模板高度耦合 缺点: 1.前后端学习门槛增加 2.数据依赖,导致文档的重要性增加 3.前端工作量增加 4.SEO的难度加大(搜索引擎优化) 5.后端模式迁移成本增加 restful api restful api是前后端分离目前来说是最佳实践,开发的标准规范,不是框架,是一种标准规范.优点就是

Django防Admin定制插件(一)

程序启动时查找所有注册了的apps.py 会执行def ready方法MyAdmin.apps.py: def ready(self): super(MyadminConfig,self).ready() from django.utils.module_loading import autodiscover_modules autodiscover_modules('reg') 这里应该是收集所有的reg文件.执行reg.py中的注册函数app01.reg.py: from app01 imp