Django实现音乐网站 ⑼

使用Python Django框架制作一个音乐网站,

本篇主要是后台对专辑、首页轮播图原有功能的基础上进行部分功能实现和显示优化。

目录

专辑功能优化

新增编辑

专辑语种改为下拉选项

添加单曲优化显示

新增单曲多选

更新歌手专辑数、专辑单曲数

获取歌手专辑数

保存处理专辑数和单曲数

列表显示

显示专辑封面

显示专辑所属歌手

首页轮播图功能优化

字段显示优化

记录列表显示图片

总结


专辑功能优化

新增编辑

专辑语种改为下拉选项

修改专辑表模型Album 专辑语种字段,使用choices参数。

langs = [('国语', '国语'), ('普通话', '普通话'), ('英语', '英语'), ('日韩', '日韩')]
single_lang = models.CharField('专辑语种', max_length=50, choices=langs, help_text='请选择专辑语种')

 效果:

添加单曲优化显示

需要在添加专辑时,单曲选项显示为单曲名称;

还是去修改表模型,需要给单曲表设置返回格式。

单曲表模型增加str方法

def __str__(self):return self.name

新增单曲多选

添加或编辑数据时,选择单曲可通过ctrl键来实现多选。

 查看数据库表

更新歌手专辑数、专辑单曲数

在新增专辑后,同步更新所属歌手拥有专辑数量。

在player/models.py中修改。

获取歌手专辑数

def get_album_singler_num(singler_id):"""获取专辑表中所属歌手数:param singler_id::return:"""return Album.objects.filter(singler_id=singler_id).count()

保存处理专辑数和单曲数

在专辑表模型中重写保存方法。

单曲数通过Singe字段获取,是一个set类型;使用内置方法len计算数量。

 重写save方法

def save(self, force_insert=False, force_update=False, using=None,update_fields=None):""" 重写save方法 处理单曲数和歌手专辑数 """super().save()# 获取选中的单曲字典sing_set = self.Singe.all()single_num = len(sing_set)# 更新单曲数self.single_num = single_num# 获取所属歌手专辑数album_num = get_album_singler_num(self.singler_id)super().save()# 更新歌手表-专辑数Singler.objects.filter(pk=self.singler_id).update(album_num=album_num)

列表显示

显示专辑封面

默认显示的是专辑封面路径。

修改player/admin.py中专辑后台类中封面自定义返回。

内容如下:

def get_cover(self):return format_html('<img src="/media/{}" width="100px" height="100px"/>'.format(self.cover))

效果:

显示专辑所属歌手

默认列表显示的专辑所属歌手为外键id,需要显示为歌手名称。

修改player/admin.py中专辑后台类中对歌手外键id返回,使用之前单曲显示歌手方法即可。

内容如下:

def get_singler_id(self):return get_singler_name(self.singler_id)get_singler_id.short_description = '歌手'

效果:

首页轮播图功能优化

字段显示优化

修改player/models.py文件中,首页轮播图表模型中字段显示为设定的内容。

内容如下:

class Carousel(models.Model):""" 首页轮播图 """class Meta:verbose_name = '首页轮播'verbose_name_plural = '首页轮播'path = models.ImageField('轮播图',upload_to=upload_save_path,help_text='请选择上传首页轮播图')href = models.CharField('跳转路径',max_length=100,help_text='请输入点击图片后跳转路径'

记录列表显示图片

修改player/admin.py文件;展示轮播图列表中显示路径改为显示图片,

还是通过format_html。

内容如下:

class CarouselAdmin(admin.ModelAdmin):""" 后台首页轮播图类 """def get_path(self):return format_html('<img src="/media/{}" width="200px" height="100px"/>',self.path,)get_path.short_description = '图片路径'def get_href(self):return self.hrefget_href.short_description = '跳转路径'# 显示字段list_display = ['id', get_path, get_href]

效果:

总结

操作后台管理自定义时,目前主要通过两方面来改变,一个是表模型;另一个是通过后台类。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/39571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【并发编程】自研数据同步工具的优化:创建线程池多线程异步去分页调用其他服务接口获取海量数据

文章目录 场景&#xff1a;解决方案 场景&#xff1a; 前段时间在做一个数据同步工具&#xff0c;其中一个服务的任务是调用A服务的接口&#xff0c;将数据库中指定数据请求过来&#xff0c;交给kafka去判断哪些数据是需要新增&#xff0c;哪些数据是需要修改的。 刚开始的设…

Character Animation With Direct3D 读书笔记

角色动画简介 2D动画&#xff1a;循环播放多张图片 3D动画&#xff1a; 骨骼动画、变形动画 DirectX入门 Win32 应用程序 Application类&#xff1a;处理主程序循环&#xff0c;图形设备的初始化 Init&#xff1a;加载资源并创建图形设备Update&#xff1a;更新游戏世界&am…

Vue中子组件修改父组件传来的Prop值

vue中子组件不能直接修改父组件传来的prop值&#xff0c;Prop 是一种传递数据的机制&#xff0c;父组件通过 Prop 向子组件传递数据&#xff0c;子组件通过 Props 接收父组件传递过来的数据&#xff0c;这些数据被封装成一个个解构体形式的对象&#xff0c;不能直接进行修改。这…

React 18 更新 state 中的对象

参考文章 更新 state 中的对象 state 中可以保存任意类型的 JavaScript 值&#xff0c;包括对象。但是&#xff0c;不应该直接修改存放在 React state 中的对象。相反&#xff0c;当想要更新一个对象时&#xff0c;需要创建一个新的对象&#xff08;或者将其拷贝一份&#xf…

图像去雨、去雪、去雾论文学习记录

All_in_One_Bad_Weather_Removal_Using_Architectural_Search 这篇论文发表于CVPR2020&#xff0c;提出一种可以应对多种恶劣天气的去噪模型&#xff0c;可以同时进行去雨、去雪、去雾操作。但该部分代码似乎没有开源。 提出的问题&#xff1a; 当下的模型只能针对一种恶劣天气…

【ARM 嵌入式 编译系列 4.1 -- GCC 编译属性 likely与unlikely 学习】

文章目录 GCC likely与unlikely 介绍linux 内核中的 likely/unlikely上篇文章:ARM 嵌入式 编译系列 4 – GCC 编译属性 __read_mostly 介绍 下篇文章: ARM 嵌入式 编译系列 4.2 – GCC 链接规范 extern “C“ 介绍 GCC likely与unlikely 介绍 likely 和 unlikely 是GCC编译器…

JDBC连接数据库(mysql)

准备jar包 官网下载即可&#xff0c;这里提供两个我下载过的jar包&#xff0c;供使用 链接&#xff1a;https://pan.baidu.com/s/1snikBD1kEBaaJnVktLvMdQ?pwdrwwq 提取码&#xff1a;rwwq eclipse导 jar包: 导入成功会有如下所示&#xff1a; ---------------------------…

个人开发中常见单词拼错错误纠正

个人开发中常见单词拼错错误纠正 前置说明参考地址后端开发相关前端开发相关客户端开发相关大数据/云计算相关工具或软件相关 前置说明 单词太多啦, 我这里只列表我个人见得比较多的, 我没见过就不列举了. 有错误或想补充的可以提交在原仓库提交Pull Request. &#x1f601; …

JavaScript面试题(二)

31、http 的理解 ? HTTP 协议是超文本传输协议&#xff0c;是客户端浏览器或其他程序“请求”与 Web 服务器响应之间的应用层通信协议。HTTPS主要是由HTTPSSL构建的可进行加密传输、身份认证的一种安全通信通道。 32、http 和 https 的区别 ? 1、https协议需要到ca申请证书…

基于DEM tif影像的插值平滑和tif纹理贴图构建方法

文章目录 基于CDT的无缝融合基于拓扑纠正的地上-地表的Bool运算融合 基于CDT的无缝融合 准备数据是一个10米分辨率的Tif影像&#xff0c;直接用于生成DEM会十分的不平滑。如下图所示&#xff0c;平滑前后的对比效果图差异&#xff1a; 基于ArcGIS的DEM平滑插值 等值线生成&…

Oracle增加列

在Oracle数据库中&#xff0c;使用ALTER TABLE语句可以很方便地为表增加新列。在进行操作时&#xff0c;需要谨慎考虑新列的数据类型、名称、默认值、约束等因素&#xff0c;以确保操作的安全性和可靠性。同时&#xff0c;也需要注意备份数据、避免在高峰期进行操作等注意事项 …

GPT内功心法:搜索思维到GPT思维的转换

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

Linux6.38 Kubernetes 集群存储

文章目录 计算机系统5G云计算第三章 LINUX Kubernetes 集群存储一、emptyDir存储卷2.hostPath存储卷3.nfs共享存储卷4.PVC 和 PV 计算机系统 5G云计算 第三章 LINUX Kubernetes 集群存储 容器磁盘上的文件的生命周期是短暂的&#xff0c;这就使得在容器中运行重要应用时会出…

编写 loading、加密解密 发布NPM依赖包,并实施落地使用

你的 Loading 开箱即可用的 loading&#xff0c; 说明&#xff1a;vue3-loading 是一个方便在 Vue 3 项目中使用的加载指示器组件的 npm 插件。它允许您轻松地在项目中添加加载动画&#xff0c;提升用户体验。 目录 你的 Loading&#x1f30d; 安装&#x1f6f9; 演示地址&…

C# WPF 无焦点自动获取USB 二维码扫码枪内容,包含中文

C# WPF 无焦点自动获取USB 二维码扫码枪内容&#xff0c;包含中文 前言项目背景 需要预知的知识实现方案第一步 安装键盘钩子第二步 获取输入的值第3 步 解决中文乱码问题分析解决思路工具函数 结束 前言 USB接口的扫码枪基本就相当于一个电脑外设&#xff0c;等同于一个快速输…

Oracle Data Redaction与Data Pump

如果表定义了Redaction Policy&#xff0c;导出时数据会脱敏吗&#xff1f;本文解答这个问题。 按照Oracle文档Advanced Security Guide第13章&#xff0c;13.6.5的Tutorial&#xff0c;假设表HR.jobs定义了Redaction Policy。 假设HR用户被授予了访问目录对象的权限&#xf…

Unity引擎使用InteriorCubeMap采样制作假室内效果

Unity引擎制作假室内效果 大家好&#xff0c;我是阿赵。   这次来介绍一种使用CubeMap做假室内效果的方式。这种技术名叫InteriorCubeMap&#xff0c;是UE引擎自带的节点效果。我这里是在Unity引擎里面的实现。 一、效果展示 这个假室内效果&#xff0c;要动态看才能看出效…

柏睿向量数据库Rapids VectorDB赋能企业级大模型构建及智能应用

ChatGPT的问世,在为沉寂已久的人工智能重新注入活力的同时,也把长期默默无闻的向量数据库推上舞台。今年4月以来,全球已有4家知名向量数据库公司先后获得融资,更加印证了向量数据库在AI大模型时代的价值。 什么是向量数据库? 在认识向量数据库前,先来了解一下最常见的关…

【业务功能篇62】Spring boot maven多模块打包时子模块报错问题

程序包 com.xxx.common.utils不存在或者xxx找不到符号 我们项目中一般都是会分成多个module模块&#xff0c;做到解耦&#xff0c;方便后续做微服务拆分模块&#xff0c;可以直接就每个模块进行打包拎出来执行部署这样就会有模块之间的调用&#xff0c;比如API模块会被Service…

【SpringBoot】SpringBoot获取不到用户真实IP怎么办

文章目录 前言问题原因解决方案修改Nginx配置文件SpringBoot代码实现 前言 项目部署后发现服务端无法获取到客户端真实的IP地址&#xff0c;这是怎么回事呢&#xff1f;给我都整懵逼了&#xff0c;经过短暂的思考&#xff0c;我发现了问题的真凶&#xff0c;那就是我们使用了N…