Django实现音乐网站 ⑵

使用Python Django框架制作一个音乐网站,在系列文章1的基础上继续开发,本篇主要是后台歌手表模块开发。

目录

表结构设计

歌手表(singer)结构

创建表模型

设置图片上传路径

创建上传文件目录

生成表迁移

执行创建表

后台管理表模型

歌手表模型操作

新增

编辑、删除

优化歌手记录列表

总结


表结构设计

歌手表(singer)结构

|---------------|--------------|------------|
| 字段 | 类型 | 注释 |
| id | int(11) | 歌手表id |
| name | varchar(50) | 用户名 |
| pinyin | varchar(50) | 名称拼音 |
| portrait | varchar(200) | 头像链接 |
| first_letter | varchar(15) | 名称首字母 |
| gender | tinyint(2) | 性别0女 1男 |
| birthday | varchar(20) | 生日 |
| height | int(4) | 身高(cm) |
| weight | int(3) | 体重(kg) |
| constellation | varchar(50) | 星座 |
| single_num | int(11) | 单曲数 |
| album_num | int(11) | 专辑数 |
| desc | text(0) | 简介 |
| addtime | int(11) | 添加时间 |
| updatetime | int(11) | 编辑时间 |

创建表模型

在player工程目录下的models.py中创建歌手表模型。

内容如下:

python 复制代码
from django.db import models
from datetime import date, datetime


# Create your models here.
class Singler(models.Model):
    """ 歌手表模型 """

    name = models.CharField(max_length=50, help_text='请输入歌手名称')
    first_letter = models.CharField(max_length=15, help_text='请输入歌手名称首字母')
    # 设置上传位置
    portrait = models.ImageField(upload_to='uploads/%Y%m%d%H/', help_text='请上传歌手照片')
    birthday = models.DateField(default=date.today, help_text='请选择歌手生日')
    height = models.IntegerField(help_text='请输入歌手身高(cm)', default=0, blank=True)
    weight = models.IntegerField(help_text='请输入歌手体重(kg)', default=0, blank=True)
    constellation = models.CharField(max_length=50, help_text='请输入歌手星座')
    single_num = models.IntegerField(default=0)
    album_num = models.IntegerField(default=0)
    desc = models.TextField(help_text='请输入歌手简介')
    addtime = models.DateTimeField(auto_now_add=True)
    updatetime = models.DateTimeField(auto_now=True)

设置图片上传路径

在myMusic/settings.py中最下方设置。

python 复制代码
# 设置文件上传位置
MEDIA_ROOT = 'static/'

创建上传文件目录

在myMusic目录下创建static文件夹。

如图:

生成表迁移

bash 复制代码
python manage.py makemigrations

执行过程:

执行创建表

python 复制代码
python manage.py migrate

创建表结构如下:

sql 复制代码
CREATE TABLE `player_singler` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `first_letter` varchar(15) NOT NULL,
  `portrait` varchar(100) NOT NULL,
  `birthday` date NOT NULL,
  `height` int(11) NOT NULL,
  `weight` int(11) NOT NULL,
  `constellation` varchar(50) NOT NULL,
  `single_num` int(11) NOT NULL,
  `album_num` int(11) NOT NULL,
  `desc` longtext NOT NULL,
  `addtime` datetime(6) NOT NULL,
  `updatetime` datetime(6) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;

后台管理表模型

在player目录下admin.py中注册歌手表模型到后台。

python 复制代码
from django.contrib import admin
from .models import Singler


# Register your models here.
class SinglerAdmin(admin.ModelAdmin):
    pass


admin.site.register(Singler, SinglerAdmin)

歌手表模型操作

新增

点击表模型旁边增加按钮,即可进入新增界面,增加一条新的歌手记录。

写完后,点击最下方的保存按钮;新增成功后,可在列表查看新增记录。

编辑、删除

通过表模型数据列表,点击进入歌手数据详情。

歌手数据详情可编辑,也可点击下方删除按钮,删除数据。

优化歌手记录列表

修改player/admin.py。

python 复制代码
from django.contrib import admin
from .models import Singler


# Register your models here.
class SinglerAdmin(admin.ModelAdmin):

    # 列表页属性
    def get_name(self):
        return self.name
    get_name.short_description = '歌手名称'

    def get_portrait(self):
        return self.portrait
    get_portrait.short_description = '歌手头像'

    def get_constellation(self):
        return self.constellation
    get_constellation.short_description = '星座'

    def get_height(self):
        return str(self.height) + 'cm'
    get_height.short_description = '身高'

    def get_weight(self):
        return str(self.weight) + 'kg'
    get_weight.short_description = '体重'

    def get_addtime(self):
        return self.addtime
    get_addtime.short_description = '创建时间'

    def get_updatetime(self):
        return self.updatetime
    get_updatetime.short_description = '更新时间'

    # 显示字段
    list_display = ['id', get_name, get_portrait, get_constellation, get_height, get_weight, get_addtime, get_updatetime]
    # 过滤器
    list_filter = ['name', 'constellation']
    # 搜索
    search_fields = ['name', 'constellation']
    # 分页
    list_per_page = 5


admin.site.register(Singler, SinglerAdmin)

效果:

总结

在django中数据表到后台操作顺序为:

创建表模型->创建表迁移文件->执行表迁移->后台注册。

优化就是后台自定义管理;

比较麻烦的就是,所有表操作修改都需要创建和执行表迁移。

相关推荐
知识领航员6 小时前
蘑兔AI音乐深度实测:功能拆解、实测表现与适用场景
java·c语言·c++·人工智能·python·算法·github
吴声子夜歌6 小时前
Go——并发编程
开发语言·后端·golang
释怀°Believe6 小时前
Spring解析
java·后端·spring
Cosolar7 小时前
大模型应用开发面试 • 每日三题|Day 003|多Agent系统中的通信协议、冲突解决和一致性保障
人工智能·后端·面试
汪汪大队u7 小时前
续:从 Docker Compose 到 Kubernetes(2)—— 服务优化与排错
网络·后端·物联网·struts·容器
如何原谅奋力过但无声7 小时前
【灵神高频面试题合集06-08】反转链表、快慢指针(环形链表/重排链表)、前后指针(删除链表/链表去重)
数据结构·python·算法·leetcode·链表
deephub8 小时前
2026 RAG 选型指南:Vector、Graph、Vectorless 该怎么挑
人工智能·python·大语言模型·rag
无风听海8 小时前
MapStaticAssets()深度解析:ASP.NET Core 静态资源交付的现代范式
后端·asp.net
geovindu9 小时前
go: Lock/Mutex Pattern
开发语言·后端·设计模式·golang·互斥锁模式
counterxing9 小时前
AI Agent 做长任务,问题到底 出在哪?
前端·后端·ai编程