前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django 2.1.7 Admin - 列表页选项

Django 2.1.7 Admin - 列表页选项

作者头像
Devops海洋的渔夫
发布2019-07-08 10:00:30
1.1K0
发布2019-07-08 10:00:30
举报
文章被收录于专栏:Devops专栏

Django 2.1.7 Admin管理后台文章

Django 2.1.7 Admin管理后台 - 注册模型、自定义显示列表字段

参考文献

https://docs.djangoproject.com/zh-hans/2.1/intro/tutorial07/

页大小

每页中显示多少条数据,默认为每页显示100条数据,属性如下:

代码语言:javascript
复制
list_per_page=100

1)打开assetinfo/admin.py文件,修改ServerInfoAdmin类如下:

代码语言:javascript
复制
@admin.register(ServerInfo)
class ServerInfoAdmin(admin.ModelAdmin):
    list_per_page = 2 # 设置每页显示两条数据

2)在浏览器中查看服务器信息的列表页面,效果如下图:

"操作选项"的位置

顶部显示的属性,设置为True在顶部显示,设置为False不在顶部显示,默认为True。

代码语言:javascript
复制
actions_on_top=True

底部显示的属性,设置为True在底部显示,设置为False不在底部显示,默认为False。

代码语言:javascript
复制
actions_on_bottom=False

2)在浏览器中刷新效果如下图:

列表中的列

属性如下:

代码语言:javascript
复制
list_display=[模型字段1,模型字段2,...]

1)打开assetinfo/admin.py文件,修改ServerInfoAdmin类如下:

代码语言:javascript
复制
@admin.register(ServerInfo)
class ServerInfoAdmin(admin.ModelAdmin):
    list_per_page = 2
    list_display = ['id', 'server_hostname', 'server_intranet_ip','server_internet_ip','server_shelves_date','update_time']

2)在浏览器中刷新效果如下图:

点击列头可以进行升序或降序排列。

将方法作为列

列可以是模型字段,还可以是模型方法,要求方法有返回值。

1)打开assetinfo/models.py文件,修改ServerInfo类如下:

代码语言:javascript
复制
class ServerInfo(models.Model):
    server_hostname = models.CharField(max_length=20, default=None)
    ....
    
    # 设置返回hostname
    def hostname(self):
        return self.server_hostname

2)打开assetinfo/admin.py文件,修改ServerInfoAdmin类如下:

代码语言:javascript
复制
class ServerInfoAdmin(admin.ModelAdmin):
    ....
    list_display = ['id', 'hostname', 'server_intranet_ip','server_internet_ip','server_shelves_date','update_time']

3)在浏览器中刷新效果如下图:

方法列是不能排序的,如果需要排序,则需要为方法指定排序依据。

代码语言:javascript
复制
admin_order_field=模型类字段

1)打开assetinfo/models.py文件,修改ServerInfo类如下:

代码语言:javascript
复制
class ServerInfo(models.Model):
    ....

    # 设置返回hostname
    def hostname(self):
        return self.server_hostname
    hostname.admin_order_field='server_hostname'

2)在浏览器中刷新效果如下图:

列标题

列标题默认为属性或方法的名称,可以通过属性设置。需要先将模型字段封装成方法,再对方法使用这个属性,模型字段不能直接使用这个属性。

代码语言:javascript
复制
short_description='列标题'

1)打开assetinfo/models.py文件,修改ServerInfo类如下:

代码语言:javascript
复制
class ServerInfo(models.Model):
    ...

    # 设置返回hostname
    def hostname(self):
        return self.server_hostname
    hostname.admin_order_field='server_hostname'
    hostname.short_description='服务器名称' # 设置方法的列标题

2)在浏览器中刷新效果如下图:

关联对象字段

在模型表中如果还要关联的其他模型表的字段,那么可以通过在模型中封装方法来展示。

1)打开assetinfo/models.py文件,修改ServerInfo类如下:

代码语言:javascript
复制
class ServerInfo(models.Model):
    ....

    # 设置返回hostname
    def hostname(self):
        return self.server_hostname
    hostname.admin_order_field='server_hostname'
    hostname.short_description='服务器名称' # 设置方法的列标题

    # 查询一个中间件信息
    def midware_name(self):
        midware = MiddlewareInfo.middlewares_obj.get(id=1)
        return midware.name
    midware_name.short_description='中间件名称'

2)打开assetinfo/admin.py文件,修改ServerInfoAdmin类如下:

代码语言:javascript
复制
@admin.register(ServerInfo)
class ServerInfoAdmin(admin.ModelAdmin):
    ...
    list_display = ['id', 'hostname','midware_name',....]

3)在浏览器中刷新效果如下图:

右侧栏过滤器

属性如下,只能接收字段,会将对应字段的值列出来,用于快速过滤。一般用于有重复值的字段。

代码语言:javascript
复制
list_filter=[]

1)打开assetinfo/admin.py文件,修改ServerInfoAdmin类如下:

代码语言:javascript
复制
class ServerInfoAdmin(admin.ModelAdmin):
    list_filter = ['server_intranet_ip']

2)在浏览器中刷新效果如下图:

搜索框

属性如下,用于对指定字段的值进行搜索,支持模糊查询。列表类型,表示在这些字段上进行搜索。

代码语言:javascript
复制
search_fields=[]

1)打开assetinfo/admin.py文件,修改ServerInfoAdmin类如下:

代码语言:javascript
复制
class ServerInfoAdmin(admin.ModelAdmin):
    search_fields = ['server_hostname']
    ....

2)在浏览器中刷新效果如下图:

中文标题

在上面模型类通过方法可以设置中文的列标题,但是直接字段是用不同的方式来设置中文标题的。

1)打开assetinfo/models.py文件,修改模型类,为属性指定verbose_name参数,即第一个参数。

代码语言:javascript
复制
class ServerInfo(models.Model):
    server_hostname = models.CharField(max_length=20, default=None, verbose_name='服务器名称')
    server_intranet_ip = models.CharField(max_length=20, default=None, verbose_name='内网IP')
    server_internet_ip = models.CharField(max_length=20, default=None, verbose_name='外网IP')
    server_shelves_date = models.DateField(auto_now_add=True, verbose_name='服务设置时间') # 数据加入时间
    update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间') # 数据更新时间
   ...

2)在浏览器中刷新效果如下图:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.07.01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Django 2.1.7 Admin管理后台文章
  • 参考文献
  • 页大小
  • "操作选项"的位置
  • 列表中的列
    • 将方法作为列
    • 列标题
    • 关联对象字段
    • 右侧栏过滤器
    • 搜索框
    • 中文标题
    相关产品与服务
    消息队列
    腾讯云消息队列 TDMQ 是分布式架构中的重要组件,提供异步通信的基础能力,通过应用解耦降低系统复杂度,提升系统可用性和可扩展性。TDMQ 产品系列提供丰富的产品形态,包含 CKafka、RocketMQ、RabbitMQ、Pulsar、CMQ 五大产品,覆盖在线和离线场景,满足金融、互联网、教育、物流、能源等不同行业和场景的需求。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档