Odoo 中文社区

    • 注册
    • 登录
    • 搜索
    • 版块
    • 标签
    • 热门
    • 用户
    • 群组

    Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

    由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

    本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

    开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

    如果您登录系统碰到问题,请在微信公众号留言:

    [分享]关于 many2one 字段 ondelete 属性的解释

    Odoo 开发与实施交流
    2
    3
    4347
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • mrshelly
      mrshelly 最后由 编辑

      OE many2one 字段 ondelete 属性 有五种可选值 ['restrict', 'no action', 'cascade', 'set null', 'set default']

      该值解释可以参考 PostgreSQL 中的约束的相关参考. 下面是 成都-左奕<18080010801> 给出的更准确的诠释..  谢谢...


      成都-左奕<18080010801>  17:42:48
      RESTRICT 禁止删除被引用的行。NO ACTION 的意思是如果在检查约束的时候还存在任何引用行,则抛出错误;如果你不声明任何东西,那么它就是缺省的行为。这两个选择的实际区别是:NO ACTION 允许约束检查推迟到事务的晚些时候,而 RESTRICT 不行。CASCADE 声明在删除一个被引用的行的时候,所有引用它的行也会被自动删除掉。在外键字段上的动作还有两个选项:SET NULL 和 SET DEFAULT ,它们导致在被引用行删除的时候,将引用它们的字段分别设置为 NULL 和缺省值。请注意这些选项并不能让你逃脱被观察和约束的境地。比如,如果一个动作声明 SET DEFAULT ,但是缺省值并不能满足外键,那么该动作就会失败。


      成都-左奕<18080010801>  17:51:00
      no action可能是到commit的时候,再检查约束. 就是你可以先删父行,再删字行.. 然后提交的时候不会报错.
      restrict 是只要删除父行就马上报错.

      1 条回复 最后回复 回复 引用 0
      • wjfonhand
        wjfonhand 最后由 编辑

        今天发现,只有 required=True 的时候ondelete才会生效

        GoodERP -- Odoo China fork

        1 条回复 最后回复 回复 引用 0
        • First post
          Last post