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中数据表到后台操作顺序为:

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

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

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

相关推荐
wazmlp00188736918 分钟前
python第三次作业
开发语言·python
逍遥德32 分钟前
如何学编程之01.理论篇.如何通过阅读代码来提高自己的编程能力?
前端·后端·程序人生·重构·软件构建·代码规范
深蓝电商API36 分钟前
住宅代理与数据中心代理在爬虫中的选择
爬虫·python
MX_93591 小时前
Spring的bean工厂后处理器和Bean后处理器
java·后端·spring
历程里程碑2 小时前
普通数组----合并区间
java·数据结构·python·算法·leetcode·职场和发展·tornado
weixin_395448912 小时前
mult_yolov5_post_copy.c_cursor_0205
c语言·python·yolo
执风挽^2 小时前
Python基础编程题2
开发语言·python·算法·visual studio code
程序员泠零澪回家种桔子2 小时前
Spring AI框架全方位详解
java·人工智能·后端·spring·ai·架构
纤纡.2 小时前
PyTorch 入门精讲:从框架选择到 MNIST 手写数字识别实战
人工智能·pytorch·python
kjkdd2 小时前
6.1 核心组件(Agent)
python·ai·语言模型·langchain·ai编程