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)

星座

singe_num

int(11)

单曲数

album_num

int(11)

专辑数

desc

text(0)

简介

addtime

int(11)

添加时间

updatetime

int(11)

编辑时间

创建表模型

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

内容如下:

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='请输入歌手星座')
    singe_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中最下方设置。

# 设置文件上传位置
MEDIA_ROOT = 'static/'

创建上传文件目录

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

如图:

生成表迁移

python manage.py makemigrations

执行过程:

执行创建表

python manage.py migrate

创建表结构如下:

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,
  `singe_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中注册歌手表模型到后台。

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。

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

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

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

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

猜你喜欢

转载自blog.csdn.net/json_ligege/article/details/132046645