模型层
一. ForeignKey中参数
1. to
跟哪个表关联,需要配合to_field,如果不写,会关联主键
2. to_field=None
3. on_delete:当这条记录删除时--》外键
-models.CASCADE: 级联删除 ,用户和用户详情,课程和章节,章节和课时
-models.SET_NULL: 关联的删除,这个字段设为空,但是需要配合:null=True
-models.SET_DEFAULT: 关联的删除,这个字段设为默认值,但是需要配合:default=xx
-models.SET: (值 / 函数内存地址) 设置上某个值 或 者运行某个函数
-models.DO_NOTHING 由于数据库有约束会报错,去掉外键关系(公司都不建立外键)
4. related_name=None:基于对象跨表查,反向查询的名字 (原来:按表名小写-是否带set取决于是否是多),现在按这个字段
-原来:course.coursechapter_set.all()
-现在:course.coursechapters.all()
# 5 related_query_name=None 基于下划线跨表查,反向查询的名字,现在按这个字段
-publish__指定的字段_name
6. db_constraint
默认是 True -----> 代表强关联 ------> 降低性能 ----> 因为删除时需要检索关联字段
实力开发中 应设置为: False ----> 代码中控制关系。
二. orm查询,正向和反向
1. 基于对象的跨表查询
# 正向:
book.publish
# 反向:
publish.book_set.all()
2. 基于双下划线的跨表查询
# 正向:《正向:按字段》
book__publish_name
# 反向: 《反向:按表名小写(是否带set取决于是否是多),基于双下划线的都是表名小写》
publish__book_name

浙公网安备 33010602011771号