在一对多关系中覆盖字段的“只读”属性

时间:2019-05-28 08:09:00

标签: xml odoo

让我们假设以下代码:

<field name="object_ids" attrs="{'readonly': [('state', 'not in', ['A', 'B'])]}">
    <form string="My object" version="7.0">
        <field name="object_name"/>
        <field name="object_description"/>
    </form>
</field>

这是一个示例,仅用于说明一个one2many字段的表单视图的定义。

是否有方法可以覆盖在readonly子字段(object_ids)中设置的object_name属性?

在这种情况下,我的整个表单视图对于指定的状态将是只读的,但是我想绕过/覆盖特定字段的此属性。例如:

...
<field name="object_name" attrs="{'readonly': False}"> <!-- overrides the readonly set -->
...

有没有办法做到这一点?还是我必须从one2many字段中删除属性并将其添加到每个字段中?这样做的目的是避免在每个字段中重复使用此属性(这很耗时,由于继承视图而容易出错)。

2 个答案:

答案 0 :(得分:0)

是的,这应该是可能的。

对于您的简单示例,您甚至不需要XPath语法:

<field name="object_ids" position="attributes">
    <attribute name="attrs">{'readonly': 0}</attribute>
</field>

这会将readonly设置为false。但是,如果您想删除attrs属性,因为不再需要它,就可以:

<field name="object_ids" position="attributes">
    <attribute name="attrs" />
</field>

第一个使用XPath的示例(也可以使用第二个示例):

<xpath expr="//field[@name='object_ids'" position="attributes">
    <attribute name="attrs">{'readonly': 0}</attribute>
</field>

答案 1 :(得分:0)

根据下面@EasyOdoo的评论,如果不重新定义one2many字段的属性,这似乎是不可能的。