【问题标题】:How to delete records in a different model in Odoo如何在 Odoo 中删除不同模型中的记录
【发布时间】:2022-07-12 23:39:19
【问题描述】:

我在 res_config_settings 中添加了一个布尔属性。当布尔值为 False 时,我想删除自定义模型('my.device')中的所有记录。

我尝试了三种不同的方法:

  1. 在 res_confg_settings 中:
    devices.unlink()```

 
 2. Also in res_config_settings:

    ```
    devices = self.env['my.device'].browse()    
    for d in devices:
        d.unlink()
  1. my.device 模型中:
def unlink_all(self):
        for rec in self:
            rec.unlink()```

I then call `self.env['my.device'].unlink_all()` from `res_config_settings`

None of them work. Strangely, the first time I tried option 1, all but one records were deleted.

【问题讨论】:

    标签: python odoo odoo-15


    【解决方案1】:

    取决于两个特殊因素:安全性和主动机制。要真正删除所有内容,请使用sudo() 充当超级用户,.with_context(active_test=False) 也可以查找非活动记录。

    例子:

    self.env['my.device'].sudo().with_context(active_test=False).search([]).unlink()
    

    或者也许更具可读性:

    device_sudo = self.env['my.device'].sudo()
    all_devices = device_sudo.with_context(active_test=False).search([])
    all_devices.unlink()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-03
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多