1

我观察了一个One2many字段相关的表。当我删除One2many字段彻底One2many小部件的一行时,表内的实际行不会被删除。

该行刚刚将外键列设置为NULL.

我们可以将此行为更改为永久(硬)删除相关行吗?

为什么设计师首先选择这种行为?任何技术考虑为什么?

谢谢

4

1 回答 1

2

在关系字段中,有参数 Ondelete。它有 3 个选项

  1. 级联(删除关系字段时删除。)
  2. 设置为 NULL(在关系字段中设置空值。)
  3. 限制(如果设置为关系,则不允许您删除。)

我们可以将此行为更改为永久(硬)删除相关行吗?

为此,您必须使用 2 个参数声明 M2O。它必须是必需的,并且 ondelete 必须是级联的。Odoo 示例

class ProductAttribute(models.Model):
    _name = "product.attribute"

    value_ids = fields.One2many('product.attribute.value', 'attribute_id', 'Values', copy=True)

class ProductAttributeValue(models.Model):
    _name = "product.attribute.value"
    attribute_id = fields.Many2one('product.attribute', string='Attribute', ondelete='cascade', required=True, index=True)
于 2020-05-05T13:20:06.983 回答