防止在 One2many 树视图上创建和删除

Prevent create and delete on a One2many tree view

我将此 One2many 字段显示为树视图,我想有条件地防止创建和删除行,但同时保留现有行的可编辑性,因此 readonly 对我不起作用,因为它隐藏了 add an item 按钮和 trash 图标,但使字段不可编辑。

我在树标签上尝试了attrs="{'create': [('order_type', '!=', 'renewal)]}",删除也是如此,但是没有用。

是否可以在不编写一些 JS 代码的情况下实现这种形式 xml?

提前致谢!

我使用 2 个字段来处理这个问题。在您的模型中添加对相同记录的另一个引用:

editable_lines_ids = fields.One2many(
    'reference.to.model',
    'field_id'
)
no_editable_lines_ids = fields.One2many(
    'reference.to.model',
    'field_id'
)

然后,在视图中添加两个具有条件可见性的字段:

<field
    name="editable_lines_ids"
    mode="tree"
    attrs="{'invisible': [('order_type', '!=', 'renewal)]}">
    <tree
      string="Lines"
      create="1"
      editable="bottom"
      delete="1">
        <field name="example_field"/>
    </tree>
</field>
<field
    name="no_editable_lines_ids"
    mode="tree"
    attrs="{'invisible': [('order_type', '=', 'renewal)]}">
    <tree
      string="Lines"
      create="0"
      editable="bottom"
      delete="0">
        <field name="example_field"/>
    </tree>
</field>