Python Odoo:继承:有条件地替换字段

Python Odoo:继承:有条件地替换字段,python,xml,xpath,odoo,Python,Xml,Xpath,Odoo,我想做一件我以前从未做过的事情,但我真的不知道如何解决它 我想做的是: 选中复选框后,将字段“名称”替换为另一个(选择)字段,但将值写入原始字段“名称” 这里的问题是,当我用replace执行以下操作时: <xpath expr="//field[@name='name']" position="replace"> <field name="name" attrs="{'invisib

我想做一件我以前从未做过的事情,但我真的不知道如何解决它

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

这里的问题是,当我用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>
而不是:

name = fields.Selection(_workcentername_selection, string="Workcenter naam")
这是它在前端的外观:

它在前端看起来是什么样子,就是它应该是什么样子。 在继承视图中选择的值,例如“Bakkerij”,只需要将其放入name字段中

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

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

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


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

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


你是对的。但由于它给出了这个错误,我知道“workcenter_naam”的值没有传递到字段“name”。我希望我的字段覆盖字段“name”,前提是realman=true。好的,那么您可以添加一个计算函数,将
workcenter\u naam
的值存储在字段
name
中。我现在已经解决了这个问题。很简单@api.onchange('workcenter_-naam'),并在函数中:self.name=self.workcenter_-naamI编辑了我的答案以关闭该问题。检查它是否正确,以及您是否喜欢我添加的重置功能
name = fields.Selection(_workcentername_selection, string="Workcenter naam")
@api.onchange('workcenter_naam')
def onchange_workcenter_naam(self):
    self.name = self.workcenter_naam
@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']