模型中的特殊方法和属性
一. choices属性
choices: 定义模型字段属性使用
class GoodsTest(models.Model):
"""测试模型类"""
STATUS_CHOICES = (
(0, '下架'),
(1, '上架')
)
# choices 选项
status = models.SmallIntegerField(default=1,choices=STATUS_CHOICES, verbose_name="商品状态")
二. HTMLField 方法
定义富文本字段类型
借助富文本编辑器,网站的编辑人员能够像使用offfice一样编写出漂亮的、所见即所得的页面。此处以tinymce为例,其它富文本编辑器的使用也是类似的。
1. 安装第三方库
pip install django-tinymce==2.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/
2. settings.py注册配置
# 注册
INSTALLED_APPS=[
...
'tinymce' # 富文本编辑器
]
# 富文本编辑器配置
TINYMCE_DEFAULT_CONFIG={
'theme':'advanced', # 主题
'width':600,
'height':400
}
3. 配置富文本路由
# 主应用 / urls.py配置富文本路由
urlpatterns = [
...
path('^tinymce', include('tinymce.urls')), # 富文本编辑器
]
4. 配置模型类字段
rom django.db import models
from tinymce.models import HTMLField # 导入富文本类型
class GoodsTest(models.Model):
"""测试模型类"""
STATUS_CHOICES = (
(0, '下架'),
(1, '上架')
)
# choices 选项
status = models.SmallIntegerField(default=1,choices=STATUS_CHOICES, verbose_name="商品状态")
# 富文本
detail =HTMLField(verbose_name="商品详情")
class Meta:
db_table='df_goods_test' # 数据库存储的表名
verbose_name="商品" #自带的站点管理使用
verbose_name_plural=verbose_name #自带的站点管理 表名
5. 数据库迁移
python manage.py makemigrations
python manage.py migrate
# 如果迁移报错:
# TypeError: render() got an unexpected keyword argument 'renderer'
# 将提示的文件中 第93行的这个注释
# D:\venvwrapper_list\venv\djangoproject\lib\site-packages\django\forms\boundfield.py"
#renderer=self.form.renderer,
6. 验证
# 子应用 / admin.py 设置站点管理显示表
from django.contrib import admin
from app01.models import GoodsTest
admin.site.register(GoodsTest)
"""
# 1. 创建超级管理员
python manage.py createsuperuser
# 2. 启动项目
# 3. 浏览器访问 :http://127.0.0.1:8000/admin
"""