ForeignKey 外键参数使用

ForeignKey 的on_delete 参数

on_delete 可以选择的参数
    models.CASCADE    # 级联删除,注意使用时机,需要强关联性的才使用这个 用户和用户详情   课程和课程章节
    models.SET_NULL  # 删除分类,课程这个字段设置为空,要有null=True参数的配合
    models.SET_DEFAULT      # 删除分类,课程这个字段设置为默认值,要有 defalut=xx参数的配合
    models.DO_NOTHING      # 删除分类,课程这个字段什么都不做,原来是什么值就是什么值
    models.SET(值,函数内存地址) # 删除分类,课程这个字段设置为写的值,或者执行内部传入的函数,函数返回值放在这

ForeignKey 的db_constraint=False  

   默认为True,  如果 db_constraint=False  只建立逻辑外键,不建立物理外键  

没有外键约束,如果这样设置,修改,新增速度快,但是可能会出现脏数据(程序层面控制)
    连表查询没有任何区别,其他操作完全一致

ForeignKey 的 related_name='表名'

基于对象的跨表查询

        正向: 对象.字段  course.course_category 根据课程拿到了课程分类对象, course_category在表内部,就是正向
        反向: 对象.表名小写 (一对一)或者 对象.表名小写_set.all() (一对多) 字段在表中没有,但是有关联关系

    related_name:
        为了替换原来基于对象的跨表查反向查询  表名小写 或 表名小写_set.all() 的
    related_query_name
        为了替换原来__连表查询,中表名小写,现在直接用related_query_name指定的字符串即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值