人工智能:Django中提供的常用列表页选项

Django提供了一些选项来控制列表页的显示字段、搜索字段、过滤器等等,这些选项在应用的admin.py文件的模型管理类中使用。接下来以Goods模型为例,对常用列表页选项进行介绍。

1. list_display 选项

list_display 选项用于控制页面展示的字段,该选项的值为元组或列表类型,其中的元素可以是模型字段或自定义字段。

(1)模型字段名

使用list_display控制在页面中显示商品id和商品名称,示例如下:

list_display = (id, name) #元组形式 list_display = [id, name] #列表形式(2)自定义字段

自定义字段指与模型相关,但并不包含在模型中的字段,这种字段是定义在goods/admin.py文件中的一些函数,这些函数会将模型实例作为参数。

例如,在goods/admin.py文件中定义用于显示商品销售额的自定义字段“salves_volume”,并使用

sales_volume.short_description 设置该字段的功能说明。示例代码如下: from .models import Goods g = Goods() def sales_volume(g): salea = g.price * g.sales return“{销售额为:{}元”.foxmat(g.name,sales) sales_volume.short_description=商品销售额

以上代码首先实例化模型类Goods,然后将实例化的模型类作为参数传递到定义的salves_volumeO函数中计算商品销售额。

使用list_display 选项控制显示salves_volume字段,代码如下:

(admin.register(Goods) class GoodsAdmin(admin.ModelAdmin): list_display = (sales_volume,)

以上代码在应用的admin.py文件中定义了Goods模型的管理类GoodsAdmin,在该类中通过 list_display 选项指定要显示的字段。

此时,刷新数据列表,可查看自定义字段显示的数据,如下图所示。

人工智能:Django中提供的常用列表页选项
2. list_display_links选项

list_display_links选项用于设置需在页面中以链接形式展示的字段,例如:

list_display_links = (id, name)

此时页面中的id和name字段将以链接形式展示,如下图所示。

人工智能:Django中提供的常用列表页选项

单击图6-14中商品列表部分id字段或name字段中的链接,可进入相应记录的编辑页面。

3.list_filter选项

list_filter选项用于开启列表页过滤器,该选项可以接收模型中的字段作为过滤条件,也可接收自定义过滤器。

(1)按模型字段进行过滤

以Goods模型为例,使用list_filter设置在页面中以商品名称作为过滤条件,示例如下:

list_filter = (name,) # 以name作为过滤字段

列表页的过滤器会在页面右侧展示,如图所示:

人工智能:Django中提供的常用列表页选项
(2)自定义过滤器

list_filter也支持自定义过滤器。Goods模型的数据根据商品名称可分为“Apple Mac Pro”、“Apple iPhone”、“华为”和“小米”四种类别,下面自定义根据商品类别进行筛选的过滤器。

自定义过滤器本质上是一个类,该类需要继承admin.SimpleListFilter类,并重写lookups()与queryset()方法,其中lookups()方法用于设置分类,queryset()方法用于查询分类数据。在admin.py中自定义过滤器类,示例代码如下:

class BrandListFilter(admin.SimpleListFilter): title=商品名称 parameter_name = brand_name def lookupa(self, request, model_admin): return ( (0, (Apple MacBook Pro)), (1, (Apple iPhone)), (2,(华为)), (*3’,(‘小米’)), ) def queryset(self, request, queryset): if self.value() == 0: return queryset.filter(name__istartswith=Apple MacBook Pro) if self.value() == 1: return queryset.filter(name__istartswith=Apple iPhone) if self.value() == 2: return queryset.filter(name__istartswith=华为)

以上代码定义的自定义过滤器中,类属性title表示列表页上过滤器的名称,类属性 parameter_name表示访问路由中所携带的参数名称;looksupsO方法返回一个二维元组,内层元组中的第一个元素是字符串类型的查询编号,第二个元素是过滤器类别名称元组;querysetO方法根据查询编号进行筛选,返回一个QuerySet对象。

在模型管理器中将自定义的过滤器添加到list_filter,示例如下:

class GoodsAdmin(admin.ModelAdmin): ‥‥ list_filter = (BrandListEilter,)

刷新选择商品来修改页面,可看到自定义的过滤器,具体如图6-16所示。

人工智能:Django中提供的常用列表页选项
4.list_per_page选项

选择商品来修改页面默认每页显示100条数据,使用list_per_page选项可以设置每页显示的数据量。例如,设置每页显示5条记录,示例如下:

list_per_page = 5 # 每页展示5条记录

刷新选择商品来修改页面,此时页面效果如图6-17所示。

人工智能:Django中提供的常用列表页选项

图6-18设置可编辑字段数据编辑完毕后,下拉到页面底部,单击“保存”按钮可保存修改后数据。

6.search_fields选项

search_fields选项用于配置搜索字段,示例代码如下:

search_fields = (name,)# 表示以name作为搜索字段

以上代码设置在选择商品来修改页面以商品名称做为搜索条件,此时刷新页面,页面中将出现一个搜索框,具体效果如图6-19所示。

人工智能:Django中提供的常用列表页选项
7.actions_on_top选项

actions_on_top选项用于设置是否在顶部显示动作下拉框,默认为True,表示在顶部显示,效果如图6-20所示。

人工智能:Django中提供的常用列表页选项

图6-20默认效果修改actions_on_top选项为Flase,那么页面顶部不会再显示动作,代码如下:

actions_on_top = False

保存设置,刷新页面,效果如图6-21所示。

人工智能:Django中提供的常用列表页选项
8.actions_on_bottom选项

actions_on_bottom选项用于设置管理员动作是否在底部显示,默认为False,表示不在底部显示,当设置为True表示在底部显示。

9.actions选项

actions选项用于设定管理员动作。列表页默认提供“删除所选”动作,管理员选定商品后选择“删除所选”动作,再单击“执行”按钮,选定的商品会被删除。a

ctions选项也支持自定义管理员动作。自定义管理员动作的本质是在管理类中新增一个方法,并将该方法添加到actions选项中。例如,现需要将图6-21中的商品数据保存到Excel文件中,此时可在admin.py文件中定义下载商品信息动作。具体代码如下:

from django.http import HttpResponse from django.utils.encoding import escape_uri_path from openpyxl import Workbook @admin.register (Goods) class GoodsAdmin(admin.ModelAdmin):def download_excel(self, request, queryset): file_name=商品信息.xlsx meta = self.model._meta #模型所有字段名 field_names = [field.name for field in meta.fields] ≠定义响应内容类型 response = HttpResponse(content_type=application/msexcel) #定义响应数据格式 response[Content-Disposition] = attachment; filename*=utf-8{}.format(escape_uri_path(file_name)) wb=workbook#创建文件对象 ws= wb.active#使用当前活动的sheet表 ws.append([ID,‘创建时间,,‘更新时间商品名称, 价格,,·库存,,·销量’]) #将模型字段名作为标题写入第一行 for obj in queryset: #遍历选择的对象列表 for field in field_names: #将模型属性值的文本格式组成列表 data = [getattr(obj, field) for field in field_names] ws.append(data) #写入模型属性值 wb.save (response) #将数据存入响应内容 return response download_excel.short_description=“下载商品信息”

以上示例代码在GoodsAdmin类中定义了方法download_excel()来实现“下载商品信息”的功能,该方法通过openpyxl模块将列表页中的商品数据写入到Excel文件中,如果当前Python环境中没有此模块,可使用pip命令进行安装。使用openpyxl模块时需先创建文件对象;然后通过文件对象的active属性获取Excel文件中的Sheet表,通过append()方法将标题行写入到excel文件;最后使用save()方法保存写入的数据。

download_excel()方法定义完成后,将其添加到actions选项中,示例如下:

actions = (download_excel,)

再次刷新选择商品来修改页面,在动作下拉框中可以看到自定义的动作已被添加,如图6-22所示。

人工智能:Django中提供的常用列表页选项

单击图6-22中的“执行”按钮下载所选商品信息,打开下载的Excel文件,保存的商品信息如图6-23所示。

人工智能:Django中提供的常用列表页选项

免责声明:文章内容来自互联网,本站仅作为分享,不对其真实性负责,如有侵权等情况,请与本站联系删除。
转载请注明出处:人工智能:Django中提供的常用列表页选项 https://www.dachanpin.com/a/cyfx/11007.html

(0)
上一篇 2023-05-12 02:41:56
下一篇 2023-05-12 02:42:54

相关推荐

  • 因为环保与污染树敌 徐辉的创业经历

      徐辉毕业于安徽科技学院主修生态农业和化工科学等专业,从小家境贫困,大学四年都处于勤工俭学度日,不过大学期间徐辉勤奋好学,一心精修于生态和化学等学科,那时的他认为随着社会的发展,我们的生存环境污染会越来越严重,我们人类将面临最大的难题就是环境污染。   所以他努力钻研各种环保化工和生态农业方面的知识,想通过自己的知识为社会做自己的一份贡献,怀着这样的梦想毕…

    创业分享 2023-05-13
    66
  • PUE降到1.2、去俄罗斯开坦克……这些脑洞大开的项目 都来自南京市玄武创新创业大赛

    PUE降到1.2、去俄罗斯开坦克……这些脑洞大开的项目 都来自南京市玄武创新创业大赛 推荐 2019-09-24 16:24:20 开采夫(杭州)科技有限公司首席运营官李政的朋友圈最近喜事连连,9月20日刚拿走南京市玄武创新创业大赛的奖杯,又马不停蹄地赶到北京,领取了中国科学院大学“国科大杯”创新创业大赛的大奖。 “南京一直很重视双创的发展,科技创新的氛围很…

    创业分享 2023-05-12
    83
  • “创业天府菁蓉汇·邛崃”创意白酒专场活动在邛崃举行

    (原标题: ) 8月13日,“创业天府菁蓉汇·邛崃”创意白酒专场活动在邛崃市平乐“菁蓉酒谷”文创广场举办。 据介绍,本次活动以“创意邛酒·就此不同”为主题,邛酒与燃点及1919酒类直供合作签约,江小白酒业创始人、董事长兼CEO陶石泉,清科集团执行副总裁符星华等20余家国内知名创投机构,本土创新创业企业、创意白酒创业团队等共计500余人参加活动。 近年来,邛崃…

    创业分享 2023-05-29
    55
  • 魅惑美妆加盟扶持力度大 无创业经验的年轻人也可以轻松驾驭

      在时代进步的今天,人们更加朝着享受型生活去发展,有更多时间去保养自己,化妆品行业在这时得以飞速发展,魅惑美妆化妆品更是其中的佼佼者品牌。其总部所推出的整店输出连锁加盟模式,以多品牌化妆品为依托,致力于为国内女性带来更完美的化妆体验。基于先进的模式、优质的产品、独特的服务、强大的技术等而形成的独特连锁经营体系。     魅惑美妆这种独特的经营模式…

    2023-05-16
    65
  • 常州召开推进会 助推村官创业、服务党员创业

      本报讯 昨天上午,我市召开“助推村官创业、服务党员创业”推进会,推进实施乡村振兴战略,扎实开展“龙城先锋”工程,进一步激发大学生村官和广大党员的创业激情与创造活力,引导更多的基层群众投身创业热潮。市委常委、组织部长周昌明出席会议并讲话。   近年来,我市持续实施大学生村官创业富民工程和党员创业“扬帆行动”,把创业富民作为大学生村官和党员施展才干、提升能力…

    创业分享 2023-05-13
    102

发表回复

登录后才能评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信