旅游网站功能简介,自建网站 好处,网站帮企业做推广价格怎么算,桂林工作网招聘使用Python Django框架制作一个音乐网站#xff0c; 本篇主要是在添加编辑过程中对后台歌手功能优化及表模型名称修改、模型继承内容。 目录
表模型名称修改
模型继承
创建抽象基类
其他模型继承
更新表结构
歌手新增、编辑优化
表字段名称修改
隐藏单曲数和专辑数
姓… 使用Python Django框架制作一个音乐网站 本篇主要是在添加编辑过程中对后台歌手功能优化及表模型名称修改、模型继承内容。 目录
表模型名称修改
模型继承
创建抽象基类
其他模型继承
更新表结构
歌手新增、编辑优化
表字段名称修改
隐藏单曲数和专辑数
姓名首字母
安装xpinyin
获取姓名首字母
重写保存方法
歌手列表页优化
图片显示处理
引入函数
路径改为显示图片
修改列表默认设置
修改列表排序
总结 表模型名称修改
如果要自定义这个名称可以在Model的Meta中声明
内容如下
class Singler(models.Model): 歌手表模型 class Meta:verbose_name 歌手verbose_name_plural 歌手
效果 然后把其他表模型都改一下名称就不再详述。 模型继承
创建一个抽象基类可以把其他数据模型的公共信息放入基类中然后当这个抽象基类被其他模型类继承后其字段会自动添加到子类中。 创建抽象基类
class BaseModel(models.Model): 设置基础模型类 addtime models.DateTimeField(auto_now_addTrue)updatetime models.DateTimeField(auto_nowTrue)class Meta:abstract True 其他模型继承
歌手、单曲、专辑、歌单表模型继承基类模型并去掉addtime、updatetime字段设定。
class Singler(BaseModel):
class Singe(BaseModel):
class Album(BaseModel):
class SongSheet(BaseModel): 更新表结构
python manage.py makemigrations
python manage.py migrate 歌手新增、编辑优化
表字段名称修改
新增、编辑页面字段显示为数据表设计字段改为中文显示。
在Model中直接修改Singler字段增加verbose_name参数。
verbose_name类型Field.verbose_nameadmin模式中字段的显示名称。
内容如下
class Singler(models.Model): 歌手表模型 class Meta:verbose_name 歌手verbose_name_plural 歌手name models.CharField(max_length50, help_text请输入歌手名称, verbose_name姓名)first_letter models.CharField(max_length15, help_text请输入歌手名称首字母, verbose_name姓名首字母)# 设置上传位置portrait models.ImageField(upload_toupload_save_path, help_text请上传歌手照片, verbose_name照片)birthday models.DateField(defaultdate.today, help_text请选择歌手生日, blankTrue, verbose_name生日)height models.IntegerField(help_text请输入歌手身高cm, default0, blankTrue, verbose_name身高cm)weight models.IntegerField(help_text请输入歌手体重kg, default0, blankTrue, verbose_name体重kg)constellation models.CharField(max_length50, help_text请输入歌手星座, verbose_name星座)# editableFalse 后台将不再显示singe_num models.IntegerField(default0, editableFalse)album_num models.IntegerField(default0, editableFalse)desc models.TextField(help_text请输入歌手简介, verbose_name简介) 效果 隐藏单曲数和专辑数
歌手所拥有的单曲数和专辑数应该是添加、删除单曲或专辑时动态计算出的数值不应该是后台添加的之前不会隐藏经过查看表模型参数找到了设置方法。 editable类型Field.editable默认值为True真
如果值为假则在admin模式下不能改写。 修改歌手表模型单曲数和专辑数字段设置editable参数。
内容如下
singe_num models.IntegerField(default0, editableFalse)
album_num models.IntegerField(default0, editableFalse)
刷新后新增歌手详情单曲数和专辑数设置不再显示。 姓名首字母
原有姓名首字母需要自己手动输入改为程序自动通过输入的歌手名称取得姓名首字母。 安装xpinyin
需要下载三方库安装命令
pip install xpinyin 获取姓名首字母
在player/models.py中处理获取首字母并设置入库操作。
from xpinyin import Pinyindef get_first_letter(name): 获取姓名中的首字母 obj Pinyin()name_pinyin obj.get_pinyin(name, )return name_pinyin[0] 重写保存方法
在Singler类中重写父类保存方法增加设置歌手姓名首字母。
并把首字母字段设置为admin不可编辑。
class Singler(models.Model): 歌手表模型 ......def save(self, force_insertFalse, force_updateFalse, usingNone,update_fieldsNone): 重写save方法 self.first_letter get_first_letter(self.name)super().save() 歌手列表页优化
图片显示处理
修改后台歌手表在player中的admins.py中的SinglerAdmin。
需要使用format_html()函数。 引入函数
from django.utils.html import format_html 路径改为显示图片
class SinglerAdmin(admin.ModelAdmin):def get_name(self):return self.nameget_name.short_description 歌手名称def get_portrait(self):return format_html(img src/{} width100px height100px/,self.portrait,)
原因django从view向template传递HTML字符串的时候django默认不渲染此HTML原因是为了防止这段字符串里面有恶意攻击的代码。所以要把列表的图片路径改为显示图片需要使用函数通过函数的{}占位符把图片路径赋值给HTML元素img。
效果 修改列表默认设置
适用于列表某字段为空时设置显示内容。
比如歌手的身高体重都为默认0时。 修改player/admin.py中对身高和体重的显示处理。
内容如下
def get_height(self):if self.height 1:return ——else:return str(self.height) cmget_height.short_description 身高def get_weight(self):if self.weight 1:return ——else:return str(self.weight) kg 效果 修改列表排序
通过Meta类来给模型赋予元数据设定ordering排序。
class Singler(models.Model): 歌手表模型 class Meta:verbose_name 歌手verbose_name_plural 歌手# 正序ordering [first_letter]# 倒序# ordering [-first_letter] 总结
本篇主要是在添加编辑过程中对后台歌手功能优化及表模型名称修改、模型继承内容。