Django中模型中外键设置中null=True和on_delete的含义

在Django框架中,模型构建的过程中,会涉及到外键设置问题,本文以订单模型为例

 

在设置user外键时,出现了null=True和on_delete两个参数设置,于是先查看了原始参数

 查看ForeignKey源码

 to、on_delete为必须参数

  to:关联的表 

 on_delete:当该表中的某条数据删除后,关联外键的操作

related_name:反查参数,设置后可以在被关联表中通过该字段反查外键所在表,默认。

set_表名 to_field:默认主键,因为mysql只支持主键作为外键,就算你没显式的创建主键,Django会给你自动创建, 如果你是DB-first,且没创建主键:数据库默认使用隐藏字段:DB_ROW_ID作为主键

null=True表示数据库中的所有者字段可以是null,这意味着您可以为模型创建一个没有所有者的对象。

on_delete=models.SET_NULL 表示如果现有对象的所有者被删除,则将现有对象的此字段设置为空。

on_delete有CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET()五个可选择的值

CASCADE:此值设置,是级联删除。

PROTECT:此值设置,是会报完整性错误。

SET_NULL:此值设置,会把外键设置为null,前提是允许为null。

SET_DEFAULT:此值设置,会把设置为外键的默认值。

SET():此值设置,会调用外面的值,可以是一个函数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今晚务必早点睡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值