set global time_zone='+8:00';
show variables like '%time_zone%';
1 迁移
分两步
迁移文件的生成
根据 models 文件生成对应的迁移文件 根据 models 和已有迁移文件进行对比,生成新的迁移文件 执行迁移文件
先去迁移记录中查找哪些文件没有迁移过
执行未迁移文件 执行完毕,记录执行过的迁移文件 重新迁移
2 mysql中的关系
2.1 一对一关系
2.3 一对多
2.4 多对多
实际开发中很少直接使用,而是自己维护 产生表的时候会产生单独的关系表
关系表中存储关联表的主键 通过多个外键实现的 外键不能同时相等 ManyRelatedManager 源码类
2.5 on_delete 的值的使用
on_delete=None, # 删除关联表中的数据时,当前表与其关联的field的行为
on_delete=models.CASCADE, # 删除关联数据,与之关联也删除
# 从表删除数据,主表不受影响;
# 主表删除数据,从表一同删除;
on_delete=models.DO_NOTHING, # 删除关联数据,什么也不做
on_delete=models.PROTECT, # 删除关联数据,引发错误ProtectedError,防止误删
# 如需删除,需要先将级联数据删除,方能进行删除
# models.ForeignKey('关联表', on_delete=models.SET_NULL, blank=True, null=True)
on_delete=models.SET_NULL, # 删除关联数据,与之关联的值设置为null
# 前提FK字段需要设置为可空,一对一同理
# models.ForeignKey('关联表', on_delete=models.SET_DEFAULT, default='默认值')
on_delete=models.SET_DEFAULT, # 删除关联数据,与之关联的值设置为默认值
# 前提FK字段需要设置默认值,一对一同理
on_delete=models.SET, # 删除关联数据,
# a. 与之关联的值设置为指定值,设置:models.SET(值)
# b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)
2.6 指定 App 进行数据迁移
python manage.py makemigrations AppName
如 python manage.py makemigrations App
2.7 模型继承
2.8 在企业开发中
model => sql sql => model
django 也提供了支持; python manage.py inspectdb > App/models.py
需要先删除原有的 models 文件; 可以直接根据表生成模型; 元信息中包含一个属性,manage = False,无法被 django 的迁移管理; 如果某个表不想被 django 管理,也可以这么做;