模型层

一. 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
posted @ 2023-04-30 19:44  codegjj  阅读(4)  评论(0)    收藏  举报