西昌市规划建设局网站,招标网站免费,品牌建设浅谈,开发公司网签房信息使用Python Django框架制作一个音乐网站#xff0c;在系列文章3的基础上继续开发#xff0c; 本篇主要是后台歌曲类型表、歌单表模块功能开发。 目录
表结构设计
歌曲类型表结构
歌单表结构
创建表模型
创建表
后台注册表模型
引入表模型
后台自定义
总结 表结构设计… 使用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_length100, help_text请输入类型名称)pid models.IntegerField(default0, help_text父类型id)class SongSheet(models.Model): 歌单表 name models.CharField(max_length100, help_text请输入歌单名称)cover models.ImageField(upload_toupload_save_path, help_text请上传歌单封面图)playnum models.IntegerField(default0, help_text请输入播放量)# 输入框改为下拉菜单is_default models.IntegerField(default0, choices[(0, 是), (1, 否)], help_text是否默认)addtime models.DateTimeField(auto_now_addTrue)updatetime models.DateTimeField(auto_nowTrue)# 歌曲类型与歌单表 多对多关系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)
) ENGINEMyISAM DEFAULT CHARSETutf8mb4;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)
) ENGINEMyISAM DEFAULT CHARSETutf8mb4;
可以看出中间表字段关系与设计相符并且相应索引都已经创建。 后台注册表模型
在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)
效果 总结
表结构的设计和创建包括后台注册操作起来大致相同多创建一些表熟练了就简单了
至此数据表设计和创建基本完成下一步就是数据添加和后台使用优化了。