继承:有条件地替换字段

2024-10-01 09:27:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做一些我以前从来没有做过的事情,我真的不知道如何解决它。在

我想做的是: 选中复选框后,将字段“name”替换为另一个(selection)字段,但将值写入原始字段“name”。在

这里的问题是,当我像这样执行inherit with replace时:

<xpath expr="//field[@name='name']" position="replace">
            <field name="name" attrs="{'invisible': [('realman', '=', True)]}"/>                
            <field name="workcenter_naam" attrs="{'invisible': [('realman', '=', False)]}" required="1"/>
</xpath>

(在这段代码中,字段“realman”是复选框。)

它在前端看起来是正确的,但是当我为字段“workcenter_naam”选择一个值并单击“保存”时,会出现以下错误:

The following fields are invalid: Name

如果我将python文件中的字段“workcenter_naam”的名称更改为“name”,它将始终使用该字段(而不是原始名称字段),而不依赖于该复选框。像这样:

^{pr2}$

而不是:

name = fields.Selection(_workcentername_selection, string="Workcenter naam")

这是前端的样子: enter image description here

它在前端是怎样的,它应该是怎样的。 在继承的视图中选择的值,例如“Bakkerij”,只需要放在name字段中。在

有人知道如何解决这个问题吗?如果有什么不清楚的地方,请告诉我。在


Tags: name名称fieldfields事情xpathattrsinherit
1条回答
网友
1楼 · 发布于 2024-10-01 09:27:02

当您隐藏字段“name”是不可见的,但它仍然是必需的

您可以保留这两个字段,但应该删除python类的“name”字段中的属性“required”。最后,将属性“required”添加到xml表单视图中,使其仅在该特定视图中是必需的:

<field name="name" position="replace">
    <field name="name" attrs="{'invisible': [('realman', '=', True)]}" required="1"/>                
    <field name="workcenter_naam" attrs="{'invisible': [('realman', '=', False)]}" required="1"/>
</field>

或者你可以做你已经做过的事情:)

^{pr2}$

我还将添加这个函数(或类似函数),以便重置“name”字段

@api.onchange('realman')
def onchange_realman(self):
    if self.realman:
        self.name = self.workcenter_naam            
    else:
        self.name = ''
        self.workcenter_naam = self._defaults['workcenter_naam']

相关问题 更多 >