Django定制Admin页面详细实例(展示页面和编辑页面)

 更新时间:2023年06月25日 09:49:42   作者:顽固油渍  
django自带的admin因为功能和样式比较简陋,常常需要再次定制,下面这篇文章主要给大家介绍了关于Django定制Admin页面(展示页面和编辑页面)的相关资料,需要的朋友可以参考下

以上篇文章中注册的Goods应用为例

默认的Admin系统中,Goods应用的详情页

上图中,并未显示商品的具体信息(名称等),统一名称为 Goods Object,为方便项目操作和管理,可在文件 model.py 中添加如下代码,用来显示商品名称和 id 信息:

def __str__(self):
    return '%s:%s' % (self.id, self.name)

效果如下(可通过点击进入商品详情页面):

如需定制此页面的展示信息,可以在文件 admin.py 中使用以下关键字达到预期效果:

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

2. list_display_links选项:用于设置需在页面中以链接形式展示的字段,可跳转到详情页面

# 计算销售额的函数
def sales_volume(g):
    total = g.price * g.sales
    return f'{g.name}销售额为:{total}'
sales_volume.short_description = '商品销售额' # 设置字段描述
 
# 装饰器方法注册应用
@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
    # 列表界面的自定义
    list_display = ('id', 'name', 'price', 'stock', 'sales', 'create_time', 'update_time', sales_volume)
    list_display_links = ('id', 'name',)  # 设置字段链接

 显示效果(蓝色字段点击可进入商品详情页):

3. list_filter选项:用于开启列表页过滤器,该选项可以接收模型中的字段作为过滤条件

@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
    # 列表界面的自定义
    list_display = ('id', 'name', 'price', 'stock', 'sales', 'create_time', 'update_time')
    # list_filter = ['name',]  # 过滤器

效果如下(即为通过特定条件筛选目标):

4. list_per_page选项:用于设置每页显示的数据量

5. list_editable选项用于设置可编辑的字段,字段若被指定为编辑字段,页面上可直接编辑该字段。

@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
    # 列表界面的自定义
    list_display = ('id', 'name', 'price', 'stock', 'sales', 'create_time', 'update_time', sales_volume)
    list_display_links = ('id', 'name',)  # 设置字段链接
    list_filter = ['id', 'name']  # 过滤器
    list_per_page = 5     # 每页展示5条记录
    list_editable = ('price', 'stock')  # 设置商品价格和库存为可编辑字段

显示效果如下:

5. search_fields选项:用于配置搜索字段

@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
    # 列表界面的自定义
    list_display = ('id', 'name', 'price', 'stock', 'sales', 'create_time', 'update_time')
    list_display_links = ('id', 'name',)  # 设置字段链接
    list_filter = ['id', 'name']  # 过滤器
    list_per_page = 5     # 每页展示5条记录
    list_editable = ('price', 'stock')  # 设置商品价格和库存为可编辑字段
    search_fields = ('name',)   # 表示以 name 作为搜索字段

显示效果:

7. actions_on_top选项:用于设置是否在顶部显示动作下拉框,默认为True,表示在顶部显示。

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

@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
    # 列表界面的自定义
    list_display = ('id', 'name', 'price', 'stock', 'sales', 'create_time', 'update_time', sales_volume)
    # actions_on_top选项用于设置是否在顶部显示动作下拉框
    # actions_on_bottom选项用于设置管理员动作是否在底部显示
    actions_on_top = False
    actions_on_bottom = True

显示效果:

定制商品详情页面(即编辑页面),依然是在admin.py文件中,有如下选项:

1. fields选项:用于控制编辑页要显示的字段,它的值是元组类

   fields选项支持以二维元组形式设置字段分栏显示,在fileds中一个元组表示一栏数据

@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin): 
    fields = ('name', 'price', 'stock') 

显示效果:

@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
    fields = (('name', 'price'), ('stock', 'sales'))      # 分栏显示

效果如下: 

2. fieldsets选项:用于对可编辑字段进行分组,该选项不可与fields选项同时使用

@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
    fieldsets = (
        ('商品基本信息', {'fields': ['name', 'stock', 'sales']}),
        ('商品价格信息', {'fields': ['price']})
    )

效果如下:

3. readonly_fields选项:用于设置只读字段

@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
    fieldsets = (
        ('商品基本信息', {'fields': ['name', 'stock', 'sales']}),
        ('商品价格信息', {'fields': ['price']})
    )
    readonly_fields = ('name',)

效果如下:

4. save_on_top选项:用于社会是否在编辑页上方显示保存、删除等按钮,默认为False 

@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
    fieldsets = (
        ('商品基本信息', {'fields': ['name', 'stock', 'sales']}),
        ('商品价格信息', {'fields': ['price']})
    )
    readonly_fields = ('name',)
    save_on_top = True

效果如下:

总结 

到此这篇关于Django定制Admin页面的文章就介绍到这了,更多相关Django定制Admin页面内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 代码分析Python地图坐标转换

    代码分析Python地图坐标转换

    这篇文章主要介绍了Python地图坐标转换的相关知识点以及分享了相关的代码实例,对此有兴趣的朋友学习下。
    2018-02-02
  • Python代码缩进和测试模块示例详解

    Python代码缩进和测试模块示例详解

    这篇文章主要给大家介绍了关于Python代码缩进和测试模块的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-05-05
  • python机器学习基础特征工程算法详解

    python机器学习基础特征工程算法详解

    这篇文章主要为大家介绍了python机器学习基础特征工程的算法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2021-11-11
  • python 无监督生成模型的示例

    python 无监督生成模型的示例

    无监督生成模型在机器学习中扮演着重要角色,特别是当我们在没有标签数据的情况下想要生成新的样本或理解数据的内在结构时,这篇文章主要介绍了python 无监督生成模型的示例,需要的朋友可以参考下
    2024-07-07
  • Python matplotlib学习笔记之坐标轴范围

    Python matplotlib学习笔记之坐标轴范围

    这篇文章主要介绍了Python matplotlib学习笔记之坐标轴范围,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Python 文件数据读写的具体实现

    Python 文件数据读写的具体实现

    这篇文章主要介绍了Python 文件数据读写的具体实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 在Python中使用pngquant压缩png图片的教程

    在Python中使用pngquant压缩png图片的教程

    这篇文章主要介绍了在Python中使用pngquant压缩png图片的教程,本文中列举了一个压缩PNG图片的实例,需要的朋友可以参考下
    2015-04-04
  • 两种方法检查Python中的变量是否为字符串

    两种方法检查Python中的变量是否为字符串

    在 Python 中,每个变量都有一个数据类型, 数据类型表示变量内部存储的数据类型,本文通过示例介绍两种不同的方法来检查 Python 中的变量是否为字符串,感兴趣的朋友一起看看吧
    2023-11-11
  • python中如何使用正则表达式的非贪婪模式示例

    python中如何使用正则表达式的非贪婪模式示例

    贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,下面这篇文章主要给大家介绍了关于python中如何使用正则表达式的非贪婪模式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-10-10
  • 解决Python中由于logging模块误用导致的内存泄露

    解决Python中由于logging模块误用导致的内存泄露

    这篇文章主要介绍了解决Python中由于logging模块误用导致的内存泄露,针对由于过多的UDP连接所产生的问题,需要的朋友可以参考下
    2015-04-04

最新评论