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

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.lryc.cn/news/118559.html

相关文章:

  • 【脚踢数据结构】
  • uni-app使用vue语法进行开发注意事项
  • 数据结构---B树
  • c++11以后c++标准库定义的固定位宽的整数类型(Fixed width integer types)
  • Object.values()
  • Oracle 开发篇+Java调用OJDBC访问Oracle数据库
  • linux 查询后台任务及杀掉进程
  • 【Vue3 博物馆管理系统】使用Vue3、Element-plus菜单组件构建前台用户菜单
  • Windows 11清除无效、回收站、过期、缓存、补丁更新文件
  • 栈和队列详解(2)
  • EMC传导干扰滤波电路设计
  • 【win10专业版远程控制】 自带远程桌面公司内网电脑
  • Ubuntu 20.04 中安装docker一键安装脚本
  • Mysql之安装-字符集设置-用户及权限操作-sqlmode设置
  • 腾讯云香港服务器租用价格_CN2线路延迟速度测试
  • 机器人静力学与刚度模型学习笔记
  • geeemap学习总结(1)——Anaconda-VSCode-geemap环境安装与配置
  • .netcore grpc一元方法详解
  • 自学网络安全(黑客)全网详细路线
  • 上半年210个数字化大单,花落谁家?
  • Integer.bitCount()
  • 【Gitee的使用】Gitee的简单使用,查看/创建SSH公匙、创建版本库、拉取代码、提交代码
  • Java 跨平台多媒体处理样例
  • cmake基础(3)——安装
  • ​LeetCode解法汇总1572. 矩阵对角线元素的和
  • BFC(Block formatting context 块级格式化上下文)
  • Leetcode-每日一题【剑指 Offer 14- II. 剪绳子 II】
  • bye 我的博客网站
  • Llama 2:开放基础和微调聊天模型
  • JVM工作的总体机制概述