【转】使用save时,Django 是如何知道 UPDATE 与 INSERT 的?

Django的数据库对象使用save()方法进行创建和更新操作,智能判断执行INSERT或UPDATE。当主键有值时执行UPDATE,无值或不存在则执行INSERT。若有default值,已存在则UPDATE,否则INSERT。
摘要由CSDN通过智能技术生成

你可能已经注意到 Django 数据库对象使用相同的 save() 方法来创建和更改对象。Django 抽象了需要使用 INSERT 或 UPDATE 的 SQL 语句。具体来说,当你调用 save(),而对象的主键属性 没有 定义一个 default 时,Django 会遵循这个算法。

如果对象的主键属性被设置为值为 True (即,一个不是 None 或空字符串的值),Django 会执行 UPDATE。
如果对象的主键属性没有设置,或者 UPDATE 没有更新任何东西(例如主键被设置为数据库中不存在的值),Django 会执行 INSERT。
如果对象的主键属性定义了一个 default,那么如果它是一个现有的模型实例,并且主键被设置为数据库中存在的值,Django 就会执行一个 UPDATE。否则,Django 会执行一个 INSERT。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值