当前位置: 首页 > news >正文

网站建设项目报告遵义市建设局网站

网站建设项目报告,遵义市建设局网站,北京网站改版报价,个人网站用什么软件使用Python Django框架制作一个音乐网站#xff0c; 本篇主要是后台对单曲原有功能的基础上进行部分功能实现和显示优化。 目录 新增编辑 歌手下拉显示修改 设置歌曲时长 安装eyed3库 获取mp3时长 歌曲时长字段修改 重写save方法 增加歌手单曲数量 查询歌手单曲数量 … 使用Python Django框架制作一个音乐网站 本篇主要是后台对单曲原有功能的基础上进行部分功能实现和显示优化。 目录 新增编辑 歌手下拉显示修改 设置歌曲时长 安装eyed3库 获取mp3时长 歌曲时长字段修改 重写save方法 增加歌手单曲数量 查询歌手单曲数量 列表显示 显示歌手名称 获取歌手名称 设置歌手名称显示 列表显示歌曲时长 单曲表模型整体 总结 新增编辑 歌手下拉显示修改 新增时选择歌手显示为对象无法确认歌手。 需修改Singler表模型增加__str__方法 内容如下 def __str__(self): 修改返回格式 return self.name 效果 设置歌曲时长 歌曲时长的值从输入框填写改为后台设置为读取歌曲文件获取的时长。 安装eyed3库 命令如下 pip install eyed3 获取mp3时长 内容如下 import eyed3def get_duration_mp3(file_path): 获取mp3音频文件时长 info eyed3.load(file_path)return info.info.time_secs 歌曲时长字段修改 修改Singe Model类 首先把歌曲时长字段设置为admin不可改写。 duration models.IntegerField(editableFalse) 重写save方法 在重写save方法的内部需要先调取父类保存方法后文件会被保存到相应路径 之后才会有文件路径读取MP3文件获取文件时长后再存储一次至于简单的方法因为对django还在学习中暂时没发现。 def save(self, force_insertFalse, force_updateFalse, usingNone,update_fieldsNone): 重写save方法 处理歌曲时长 super().save()#get_singe_singler_num(self.singler)path_name str(self.path.name)if path_name.endswith(.mp3):save_path os.path.join(settings.MEDIA_ROOT, path_name)print(save_path)self.duration get_duration_mp3(save_path)print(self.duration)super().save() 增加歌手单曲数量 需要在增加相应歌手关联单曲时同时增加该歌手的单曲数量。 查询歌手单曲数量 在player/models.py中新增方法通过单曲表歌手外键id查询相应歌手拥有单曲数量。 内容如下 def get_singe_singler_num(singler_id):获取单曲表中所属歌手数:param singler_id::return:return Singe.objects.filter(singler_idsingler_id).count() 同步歌手单曲数量 单曲保存时处理歌手单曲数量修改单曲表模型save方法在最后保存前增加处理。 内容如下 def save(self, force_insertFalse, force_updateFalse, usingNone,update_fieldsNone): 重写save方法 处理歌曲时长 歌手单曲数量 super().save()path_name str(self.path.name)if path_name.endswith(.mp3):save_path os.path.join(settings.MEDIA_ROOT, path_name)self.duration get_duration_mp3(save_path)# 获取相应歌手单曲数singe_num get_singe_singler_num(self.singler_id)# 更新相应歌手的单曲数Singler.objects.filter(pkself.singler_id).update(singe_numsinge_num)super().save() 列表显示 显示歌手名称 单曲列表关联歌手外键id如果需要显示歌手名称也需要修改否则只显示外键id。 获取歌手名称 在player/admin.py中设置方法通过外键id去查询相应歌手信息。 内容如下 def get_singler_name(id):获取歌手名称:param id:歌手id:return:return Singler.objects.get(pkid) 设置歌手名称显示 修改后台单曲类中外键字段自定义显示处理。 class SingeAdmin(admin.ModelAdmin): 后台单曲类 ......def get_singler_id(self):return get_singler_name(self.singler_id)get_singler_id.short_description 歌手 效果 列表显示歌曲时长 修改后台单曲类增加显示歌曲时长字段。 def get_duration(self):return self.durationget_duration.short_description 时长(s)# 显示字段 list_display [id, get_name, get_singler_id, get_duration, get_addtime, get_updatetime] 单曲表模型整体 class Album(BaseModel): 专辑表 class Meta:verbose_name 专辑verbose_name_plural 专辑name models.CharField(专辑名称, max_length50, help_text请输入专辑名称)cover models.ImageField(专辑封面, upload_toupload_save_path, help_text请上传专辑封面图)desc models.CharField(专辑描述, max_length255, help_text请输入专辑描述)single_num models.IntegerField(default0, editableFalse)langs [(国语, 国语), (普通话, 普通话), (英语, 英语), (日韩, 日韩)]single_lang models.CharField(专辑语种, max_length50, choiceslangs, help_text请选择专辑语种)# 设置与歌手表关联外键 一对多singler models.ForeignKey(Singler, on_deletemodels.CASCADE, verbose_name歌手, help_text请选择歌手)# 设置与单曲表关联外键 多对多Singe models.ManyToManyField(Singe, verbose_name单曲, help_text请选择单曲)def save(self, force_insertFalse, force_updateFalse, usingNone,update_fieldsNone): 重写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(pkself.singler_id).update(album_numalbum_num) 总结 对后台单曲模块进行部分功能优化主要通过新增编辑和列表两方面来进行优化。
http://www.hn-smt.com/news/66073/

相关文章:

  • 详细介绍:【微服务组件】Springboot结合Dubbo实现RPC调用
  • 6000 AI Program Topic 3~6
  • 11月25号
  • 效率与精准:文档信息抽取技术如何重塑财务分析流程
  • 6.1.1.3 大数据方法论与实践指南-SparkStreaming 任务优化实践 - 详解
  • 容错量子电路大幅降低资源开销
  • 2025年舒适操控的轮胎推荐:TOP5专业测评深度揭秘
  • 低代码 vs 无代码:核心差异、适用场景与选型决策
  • 人工智能之数据分析 numpy:第十四章 知识总结
  • 皮革外观缺陷检测设备:助力生产质量把控的技术应用
  • 2025水设备厂家推荐榜:灌装/大桶/桶装/纯净/瓶装/水设备综合品牌参考,引领智能绿色升级
  • AOI检测设备定制厂家:聚焦高精度检测方案的行业实践
  • AOI检测设备厂家推荐:聚焦表面检测技术前沿企业
  • 2025年评价高的西安净化板实力厂家最新用户好评榜
  • 实用指南:[论文阅读] 从 5MB 到 1.6GB 数据:Java/Scala/Python 在 Spark 中的性能表现全解析
  • 完整教程:程序员收藏!AI大模型教程(全面详解)从入门到精通,一篇就够了!
  • 机器人技术如何将电子垃圾变为科技金矿
  • KSVD的稀疏编码去噪
  • 桂林高中一对一辅导机构权威榜单:2025阳朔、龙胜等地区辅导机构综合实力榜
  • 2025年钢管表面喷涂处理生产商权威推荐榜单:高效自动喷油设备/全自动喷油生产线/普压自动喷油机源头厂家精选
  • 桂林小学一对一补习机构实力TOP排行榜:2025雁山、临桂等地区补习机构权威评测优选
  • matlab实现图像纹理特征提取
  • 11.22 NOIP 模拟赛 T1. 破乱的诗歌
  • 漳州一对一辅导机构终极榜单:2025最新十大辅导机构实力排名
  • 如何通过机器学习(如K-means、SVM、决策树)与深度学习(如CNN、LSTM)模型,进行全球气候变化驱动因素的数据分析与趋势预测 - 详解
  • 2025年学历提升、成人学历、专升本、自考本科、高起专服务机构综合评测与精选推荐
  • kafka 的ack机制
  • AI 数据分析如何保障准确性?Aloudata Agent 构建可信数据基础
  • 视频融合平台EasyCVR助力城市渣土车管理,打造智能联网监控方案
  • PDF超级助手软件下载安装教程_免费PDF编辑工具使用指南