django admin后台管理系统中配置可上传多张图片功能

news/2024/12/23 7:43:32/

目录

 一、默认的常规方式只能上传一张图片的示例

二、配置可上传多张图片


问题:在django自带的admin后台管理系统中常规的方式只能上传一张图片,无法上传添加多张图片,如下图。所以现在需要配置可上传多张图片的功能!

 一、默认的常规方式只能上传一张图片的示例

模型models.py

class Product(models.Model):"""常规商品"""name = models.CharField(verbose_name="商品名称", max_length=50)desc = models.TextField(verbose_name="描述")show_img = models.ImageField(verbose_name="展示图", upload_to='images/')detail_img = models.ImageField(verbose_name="详情图", upload_to='images/')is_sale = models.BooleanField(verbose_name="是否上架", default=False)  # 为False时是下架is_show = models.BooleanField(verbose_name="是否展示在首页", default=True)  # 为True时是展示在首页create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")update_time = models.DateTimeField(auto_now=True, verbose_name="最后一次修改时间")def __str__(self):return self.nameclass Meta:verbose_name = "常规商品"verbose_name_plural = verbose_name

在以上Product模型配置到admin后台中时,展示图show_img和详情图detail_img只能各上传一张,现在的需求是展示图show_img和详情图detail_img都可以各自上传多张图片!

二、配置可上传多张图片

1,配置模型models.py

class Product(models.Model):"""常规商品"""name = models.CharField(verbose_name="商品名称", max_length=50)desc = models.TextField(verbose_name="描述")# show_img = models.ImageField(verbose_name="展示图", upload_to='images/')# detail_img = models.ImageField(verbose_name="详情图", upload_to='images/')is_sale = models.BooleanField(verbose_name="是否上架", default=False)  # 为False时是下架is_show = models.BooleanField(verbose_name="是否展示在首页", default=True)  # 为True时是展示在首页create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")update_time = models.DateTimeField(auto_now=True, verbose_name="最后一次修改时间")def __str__(self):return self.nameclass Meta:verbose_name = "常规商品"verbose_name_plural = verbose_nameclass ProductShowImage(models.Model):product = models.ForeignKey(Product, on_delete=models.CASCADE, verbose_name="常规商品", related_name='imgs')show_img = models.ImageField(upload_to='show_images/', verbose_name="展示图")detail_img = models.ImageField(upload_to='detail_images/', verbose_name="详情图")def __str__(self):return ""class Meta:verbose_name = "常规商品图"verbose_name_plural = verbose_name

将原模型Product中展示图show_img和详情图detail_img注释掉,添加一个ProductShowImage类,模型Product和ProductShowImage是一对多关系,并将展示图show_img和详情图detail_img放在外键所在的表中。

2,配置admin.py文件

class ProductShowImageInline(admin.TabularInline):model = ProductShowImagecan_delete = Trueextra = 3  # 额外展示一个添加图片选项(默认就是3)max_num = 6  # 最多添加6张图片class ProductAdmin(admin.ModelAdmin):"""常规商品"""inlines = [ProductShowImageInline]admin.site.register(Product, ProductAdmin)  # 注册到admin后台

经过以上配置后,即可在admin后台中显示可上传多张图片了,如下图


http://www.ppmy.cn/news/80698.html

相关文章

内网渗透(七十七)之域权限维持之ACL滥用(中)

ACL滥用(中) 3、msDS-AllowedToActOnBehalfOfOtherldentity 属性权限 如图所示是微软对于msDS-AllowedToActOnBehalfOfOtherldentity 属性的描述 jack是域中的一个普通用户。现在我们获得了域管理员的权限,并想进行权限维持,可以进行如下的操作:使用Empire下的powerview…

了解操作系统的基本原理和常见操作,提高计算机使用效率

部分数据来源:ChatGPT 简介 计算机基础知识对于IT从业者来说是非常重要的,它可以帮助我们深入地理解计算机的工作原理,掌握一些核心概念和技术。在这篇文章中,我们将介绍计算机基础知识的一些主要内容。 1、计算机的组成和工作原…

园区网络安全设计——核心层

园区网络安全设计——核心层 本机防攻击 本机防攻击是交换机的一个重要功能集合,可保护CPU,解决CPU因处理大量正常上送CPU的报文或者恶意攻击报文造成的业务中断问题,保证设备在受到攻击时已有业务可以正常运转,主要功能有&…

Linux :: 【基础指令篇 :: 用户管理:(2)】::设置用户密码(及本地Xshell 登录云服务器操作演示) :: passwd

前言:本篇是 Linux 基本操作篇章的内容! 笔者使用的环境是基于腾讯云服务器:CentOS 7.6 64bit。 目录索引: 1. 基本语法 2. 基本用法 3. 注意点 4. 补充:指定用户设置密码操作实例测试及登录本地 Xshell 登录演…

STL详解— list类的模拟实现

本文章所需实现三个类及其每个类里的各个函数接口总览&#xff1a; namespace zhc {//模拟实现list当中的结点类template<class T>struct list_node{//成员函数list_node(const T& val T()); //构造函数//成员变量T _val; //数据域list_node<T&g…

Github Copilot Chat申请,安装,及常见问题解决

Copilot Chat 是Copilot X 引入的预览功能&#xff0c;不但可以像Chatgpt一样聊天&#xff0c;也可以解释代码&#xff0c;bug 修复&#xff0c;也可以生成单元测试。是一个非常有吸引力的功能。 申请 首先申请&#xff0c;并开通copilot, 地址为&#xff1a;https://github.c…

C++设计模式之抽象工厂模式(Abstract Factory)

文章目录 定义前言问题解决方案 结构适用场景实现方式优点缺点与其他模式的关系实例 [C]22种设计模式的C实现大纲 定义 抽象工厂是一种创建型设计模式&#xff0c;它能创建一系列相关的对象&#xff0c;而无需指定其具体类。 前言 问题 假设你正在开发一款家具商店模拟器。…

认证方式总结(802.1x,PPPOE,IPOE,Portal,MAC认证)

1.802.1x: 认证设备NAC&#xff1a;交换机 802.1x协议是基于Client/Server的访问控制和认证协议。它可以限制未经授权的用户/设备通过接入端口(access port)访问LAN/WLAN。在获得交换机或LAN提供的各种业务之前&#xff0c;802.1x对连接到交换机端口上的用户/设备进行认证。在…