Model+静态资源
Model >DB
迁移
-
生成迁移
- makemigrations
-
执行迁移
- migrate
迁移原理
- 根据既有迁移文件与Model进行比对,生成新的迁移文件
- ,直接过滤掉已执行的文件
- 执行未执行的迁移文件,并记录
DB >>Model
数据库中建立表
python manage.py inspectdb
- 在终端中生成model的语句,然后粘贴到models.py中
python manage.py inspectdb > models.py
- 可以直接生成models.py文件
以上都会自动生成元信息 Meta, manage=False
模型关系
1对1
-
OneToOneField
-
确认主从关系
- 底层实现:在表中晟敏国外键并添加唯一约束
-
获取
-
从获取主
- 显性属性
-
主获取从
- 隐性属性
- 默认就是从表模型名(小写)
-
-
on_delete
-
models.CASECADE
- 默认级联数据同步删除
-
models.PROTECT
- 受保护的
- 当存在级联数据的时候,删除主表会爆出异常
- 除非产出所有从表数据,才可以删除
-
set
-
SET_NULL
- 设为空
- 前提是字段允许为Null
-
SET_EFAULT
- 设为默认值
- 前提是存在默认值
-
SET
- 自己赋值
-
-
1对多
-
直接使用外键实现
-
主从,多是从
-
级联对象获取
-
从获取主
- 显性属性
-
主获取从
-
隐性属性
-
默认是 级联数据_set
-
也是manager的一个子类
- filter
- exclude
- all
- 切片
-
-
-
数据删除同1对1
-
多对多
-
ManyToManyField
-
两张以上的表的对应关系
-
会自动生成一个联合唯一表
- 表中使用多个外键实现
- 外键对应关系表的主键
-
数据获取
-
两张表的结构完全一样
-
从获取主
-
Manage对象
-
filter等
-
操作级联数据
- add
- remove
- clear
- set
-
-
显性属性
-
-
主获取从
- 隐性属性
- 其他都一样
-
模型继承
默认一个模型映射一张表
如果模型存在继承
-
父模型产生表映射
- 子表对应的表会通过外键和副表产生关系
-
数据量越大,关系越多,性能越低
-
不建议直接继承
将父模型抽象,使用
- 在model的元信息中添加 abstract=True
- 抽象的模型不会在数据库中产生表
- 子模型继承父模型中的所有字段
静态资源
使用时注意配置资源位置
STATICFILE_DIRS
模板中添加 {% load static %}
{% static ‘相对路径’ %}
文件上传
客户端
- 必须使用POST
- 指定enctype="multiplepart/form-data
原生
- with open …
- 每次写入需要flush()
Django内置
-
imageField
-
依赖于Pillow
-
配置使用
-
settings中指定MEDIA_ROOT
-
指定字段的upload_to
-
文件路径支持时间格式化
-
%Y%m%d
- 这个可以活用
- icon/%Y%m
-
-
-
子主题 3
-