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

Django实现音乐网站 ⑷

使用Python Django框架制作一个音乐网站,在系列文章3的基础上继续开发,

本篇主要是后台歌曲类型表、歌单表模块功能开发。

 

目录

表结构设计

歌曲类型表结构

歌单表结构

创建表模型

创建表

后台注册表模型

引入表模型

后台自定义

总结


表结构设计

歌曲类型表结构

字段

类型

注释

id

int(11)

自增id

name

varchar(100)

歌单名称

pid

int(11)

父类型id 0表明为父类

歌单表结构

字段

类型

注释

id

int(11)

name

varchar(100)

歌单名称

cover

varchar(100)

封面路径

playnum

int(11)

播放量

is_default

tinyint(2)

是否默认 0否 1是

addtime

int(11)

添加时间

updatetime

int(11)

更新时间

创建表模型

还是在player/models.py中添加。歌单表与类型表是多对多关系,中间表不需要创建,

只需要声明好关系,django会自动创建相应中间表。

内容如下:

class SongCategory(models.Model):""" 歌曲类型表 """name = models.CharField(max_length=100, help_text='请输入类型名称')pid = models.IntegerField(default=0, help_text='父类型id')class SongSheet(models.Model):""" 歌单表 """name = models.CharField(max_length=100, help_text='请输入歌单名称')cover = models.ImageField(upload_to=upload_save_path, help_text='请上传歌单封面图')playnum = models.IntegerField(default=0, help_text='请输入播放量')# 输入框改为下拉菜单is_default = models.IntegerField(default=0, choices=[('0', '是'), ('1', '否')], help_text='是否默认')addtime = models.DateTimeField(auto_now_add=True)updatetime = models.DateTimeField(auto_now=True)# 歌曲类型与歌单表 多对多关系category = models.ManyToManyField('SongCategory')# 歌单表与单曲表多对多关系singe = models.ManyToManyField('Singe')

注意:可通过choices参数把输入框改为下拉菜单。

创建表

python manage.py makemigrationspython manage.py migrate

创建了四个表,分别为歌曲类型表、歌单表、歌单类型表、歌单单曲表;

歌曲类型表和歌单表结构与表结构设计相同,不再展示;

中间表结构如下:

CREATE TABLE `player_songsheet_singe` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`songsheet_id` bigint(20) NOT NULL,`singe_id` bigint(20) NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `player_songsheet_singe_songsheet_id_singe_id_78f26d1c_uniq` (`songsheet_id`,`singe_id`),KEY `player_songsheet_singe_songsheet_id_2375e76e` (`songsheet_id`),KEY `player_songsheet_singe_singe_id_022e51d3` (`singe_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;CREATE TABLE `player_songsheet_category` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`songsheet_id` bigint(20) NOT NULL,`songcategory_id` bigint(20) NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `player_songsheet_categor_songsheet_id_songcategor_d9f0af95_uniq` (`songsheet_id`,`songcategory_id`),KEY `player_songsheet_category_songsheet_id_80b16cc8` (`songsheet_id`),KEY `player_songsheet_category_songcategory_id_397ab572` (`songcategory_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;

可以看出中间表字段关系与设计相符,并且相应索引都已经创建。

 

后台注册表模型

在player/admin.py中操作。

引入表模型

from .models import SongCategory, SongSheet

 

后台自定义

修改默认的显示、过滤、搜索、分页。

class SongCategoryAdmin(admin.ModelAdmin):def get_name(self):return self.nameget_name.short_description = '类型名称'def get_pid(self):return self.pidget_pid.short_description = '类型父id'# 显示字段list_display = ['id', get_name, get_pid]# 过滤器list_filter = ['name']# 搜索search_fields = ['name']# 分页list_per_page = 10class SongSheetAdmin(admin.ModelAdmin):def get_name(self):return self.nameget_name.short_description = '类型名称'def get_cover(self):return self.coverget_cover.short_description = '歌单封面'def get_playnum(self):return self.playnumget_playnum.short_description = '播放量'def get_isdefault(self):return '是' if self.is_default else '否'get_isdefault.short_description = '是否默认'get_playnum.short_description = '播放量'def get_addtime(self):return self.addtimeget_addtime.short_description = '创建时间'def get_updatetime(self):return self.updatetime# 显示字段list_display = ['id', get_name, get_cover]# 过滤器list_filter = ['name']# 搜索search_fields = ['name']# 分页list_per_page = 10admin.site.register(SongCategory, SongCategoryAdmin)
admin.site.register(SongSheet, SongSheetAdmin)

效果:

 

总结

表结构的设计和创建,包括后台注册操作起来大致相同,多创建一些表熟练了就简单了;

至此数据表设计和创建基本完成,下一步就是数据添加和后台使用优化了。

相关文章:

Django实现音乐网站 ⑷

使用Python Django框架制作一个音乐网站,在系列文章3的基础上继续开发, 本篇主要是后台歌曲类型表、歌单表模块功能开发。 目录 表结构设计 歌曲类型表结构 歌单表结构 创建表模型 创建表 后台注册表模型 引入表模型 后台自定义 总结 表结构设计…...

2023年华数杯数学建模C题思路 - 母亲身心健康对婴儿成长的影响

# 1 赛题 C 题 母亲身心健康对婴儿成长的影响 母亲是婴儿生命中最重要的人之一,她不仅为婴儿提供营养物质和身体保护, 还为婴儿提供情感支持和安全感。母亲心理健康状态的不良状况,如抑郁、焦虑、 压力等,可能会对婴儿的认知、情…...

openGauss学习笔记-30 openGauss 高级数据管理-别名

文章目录 openGauss学习笔记-30 openGauss 高级数据管理-别名30.1 语法格式30.1.1 列别名语法30.1.2 表别名语法 30.2 参数说明30.3 示例 openGauss学习笔记-30 openGauss 高级数据管理-别名 SQL可以重命名一张表或者一个字段的名称,这个名称为该表或该字段的别名。…...

C#实现多线程局域网扫描器的思路与具体代码

C#实现多线程局域网扫描器的思路与具体代码 思路: 获取局域网内所有 IP 地址遍历所有 IP 地址,使用 Ping 命令测试主机是否在线如果主机在线,则扫描主机上的所有端口,确定哪些端口是开放的输出扫描结果 在上述过程中&#xff0…...

Redis秒杀:一人一单问题及初步解决

优惠券秒杀一人一单 前言一、需求以及之前存在的问题二、增加一人一单逻辑1.初步代码2.封装一人一单逻辑3.控制锁的粒度 三、事务控制问题四、总结 前言 跟随黑马虎哥学习redis: 这是我认为b站上最好的redis教程,各方面讲解透彻,知识点覆盖…...

python 数据分析面试题:求分组排第n名的记录数据

近期面试遇到一个面试题,分享给大家。 文中会提供详细的解题思路以及问题延伸 一、面试题 面试题:输出各学科总分第一名的学员姓名、年龄、分数数据: class_a {name: [学员1, 学员2, 学员3, 学员4,学员5],age: [23, 24, 26, 27,25],course…...

eclipse常用快捷键

Eclipse常用快捷键 补全代码的声明:alt /快速修复: ctrl 1批量导包:ctrl shift o使用单行注释:ctrl /使用多行注释: ctrl shift /取消多行注释:ctrl shift \复制指定行的代码:ctrl alt down 或…...

什么是OCR?OCR技术详解

光学字符识别(Optical Character Recognition)简称为“OCR”。ORC是指对包含文本资料的图像文件进行分析识别处理,获取文字及版面信息的技术。 一般包括以下几个过程: 1.图像输入 针对不同格式的图像,有着不同的存储格式和压缩方式。目前&…...

【大模型】开源且可商用的大模型通义千问-7B(Qwen-7B)来了

【大模型】开源且可商用的大模型通义千问-7B(Qwen-7B)来了 新闻通义千问 - 7B 介绍评测表现快速使用环境要求安装相关的依赖库推荐安装flash-attention来提高你的运行效率以及降低显存占用使用 Transformers 运行模型使用 ModelScope 运行模型 量化长文本…...

SQL分类及通用语法数据类型

一、SQL分类 DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)DML: 数据操作语言,用来对数据库表中的数据进行增删改DQL: 数据查询语言,用来查询数据库中表的记录DCL: 数据控制语言,用来创建数据库…...

亿欧智库:2023中国功效型护肤产品成分解析研究报告(附下载

关于报告的所有内容,公众【营销人星球】获取下载查看 核心观点 消费端:“纯净美妆〞概念火热,消费驱动因素向成分来源硬核转变 新冠疫情过后,消费者对于生活健康:自然,可持续的关注度持续上升。在消费者…...

Kubernetes高可用集群二进制部署(一)主机准备和负载均衡器安装

Kubernetes概述 使用kubeadm快速部署一个k8s集群 Kubernetes高可用集群二进制部署(一)主机准备和负载均衡器安装 Kubernetes高可用集群二进制部署(二)ETCD集群部署 Kubernetes高可用集群二进制部署(三)部署…...

python与深度学习(十二):CNN和猫狗大战二

目录 1. 说明2. 猫狗大战的CNN模型测试2.1 导入相关库2.2 加载模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章猫狗大战训练的模型进行测试。…...

React(1)——快速入门

目录 一、React背景简介 ❤️ 官网和资料 📚 介绍描述 🐧 React的特点 🔨 React高效的原因 🙏🏻 二、React的基本使用 💻 三、React JSX(JSX:JavaScript XML)📦 …...

【论文】【生成对抗网络五】Wasserstein GAN (WGAN)

【题目、作者】: 紫色:要解决的问题或发现的问题 红色:重点内容 棕色:关联知识,名称 绿色:了解内容,说明内容 论文地址: 论文下载 本篇文章仅为原文翻译,仅作参考。…...

学习率Learn_rate是什么(深度学习)

学习率是指在训练神经网络时用于调整参数的步进大小,它决定了每次梯度更新时参数的调整程度。学习率的选择直接关系到模型的性能和训练过程的效果。 学习率变化可能带来的影响: 收敛速度:较高的学习率可以加快模型的收敛速度,因为…...

webpack基础知识五:说说Loader和Plugin的区别?编写Loader,Plugin的思路?

一、区别 前面两节我们有提到Loader与Plugin对应的概念,先来回顾下 loader 是文件加载器,能够加载资源文件,并对这些文件进行一些处理,诸如编译、压缩等,最终一起打包到指定的文件中plugin 赋予了 webpack 各种灵活的…...

AI大模型之花,绽放在鸿蒙沃土

随着生成式AI日益火爆,大语言模型能力引发了越来越多对于智慧语音助手的期待。 我们相信,AI大模型能力加持下的智慧语音助手一定会很快落地,这个预判不仅来自对AI大模型的观察,更来自对鸿蒙的了解。鸿蒙一定会很快升级大模型能力&…...

[JAVAee]锁策略

目录 乐观锁与悲观锁 乐观锁 乐观锁的冲突检测 悲观锁 读锁与写锁 重量级锁与轻量级锁 重量级锁 轻量级锁 自旋锁 公平锁与非公平锁 可重入锁与不可重入锁 乐观锁与悲观锁 乐观锁 在乐观锁中,假设数据并不会发生冲突,在正式提交数据时会对数据进行冲突检测,如果发…...

uni-app-使用tkiTree组件实现树形结构选择

前言 在实际开发中我们经常遇见树结构-比如楼层区域-组织架构-部门岗位-系统类型等情况 往往需要把这个树结构当成条件来查询数据,在PC端可以使用Tree,table,Treeselect等组件展示 在uni-app的内置组件中似乎没有提供这样组件来展示&#x…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

python/java环境配置

环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

Go语言多线程问题

打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

es6+和css3新增的特性有哪些

一:ECMAScript 新特性(ES6) ES6 (2015) - 革命性更新 1,记住的方法,从一个方法里面用到了哪些技术 1,let /const块级作用域声明2,**默认参数**:函数参数可以设置默认值。3&#x…...

PydanticAI快速入门示例

参考链接:https://ai.pydantic.dev/#why-use-pydanticai 示例代码 from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIModel from pydantic_ai.providers.openai import OpenAIProvider# 配置使用阿里云通义千问模型 model OpenAIMode…...

vxe-table vue 表格复选框多选数据,实现快捷键 Shift 批量选择功能

vxe-table vue 表格复选框多选数据&#xff0c;实现快捷键 Shift 批量选择功能 查看官网&#xff1a;https://vxetable.cn 效果 代码 通过 checkbox-config.isShift 启用批量选中,启用后按住快捷键和鼠标批量选取 <template><div><vxe-grid v-bind"gri…...

SFTrack:面向警务无人机的自适应多目标跟踪算法——突破小尺度高速运动目标的追踪瓶颈

【导读】 本文针对无人机&#xff08;UAV&#xff09;视频中目标尺寸小、运动快导致的多目标跟踪难题&#xff0c;提出一种更简单高效的方法。核心创新在于从低置信度检测启动跟踪&#xff08;贴合无人机场景特性&#xff09;&#xff0c;并改进传统外观匹配算法以关联此类检测…...