Django 2.1.7 Admin - 列表页选项

网友投稿 878 2022-11-21

Django 2.1.7 Admin - 列表页选项

Django 2.1.7 Admin - 列表页选项

Django 2.1.7 Admin管理后台文章

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

参考文献

​​ServerInfoAdmin(admin.ModelAdmin): list_per_page = 2 # 设置每页显示两条数据

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

"操作选项"的位置

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

actions_on_top=True

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

actions_on_bottom=False

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

列表中的列

属性如下:

list_display=[模型字段1,模型字段2,...]

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

@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类如下:

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类如下:

class ServerInfoAdmin(admin.ModelAdmin): .... list_display = ['id', 'hostname', 'server_intranet_ip','server_internet_ip','server_shelves_date','update_time']

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

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

admin_order_field=模型类字段

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

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

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

列标题

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

short_description='列标题'

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

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类如下:

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类如下:

@admin.register(ServerInfo)class ServerInfoAdmin(admin.ModelAdmin): ... list_display = ['id', 'hostname','midware_name',....]

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

右侧栏过滤器

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

list_filter=[]

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

class ServerInfoAdmin(admin.ModelAdmin): list_filter = ['server_intranet_ip']

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

搜索框

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

search_fields=[]

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

class ServerInfoAdmin(admin.ModelAdmin): search_fields = ['server_hostname'] ....

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

中文标题

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

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

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)在浏览器中刷新效果如下图:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Django 2.1.7 Admin - 注册模型、自定义显示列表字段
下一篇:AIX之为什么要使用页面空间(SWAP)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~