app开发者平台在数字化时代的重要性与发展趋势解析
948
2022-11-21
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~