我想做一些我以前从未做过的事情,并且对如何解决它没有任何想法。
我想做的是: 选中复选框后,替换字段" name"使用另一个(选择)字段,但将值写入原始字段" name"。
这里的问题是当我用这样的替换继承:
<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>
(在此代码中,字段&#34; realman&#34;是复选框。)
它在前端看起来是正确的,但是当我为字段选择一个值&#34; workcenter_naam&#34;然后单击“保存”,它会显示以下错误:
以下字段无效:名称
如果我更改字段的名称&#34; workcenter_naam&#34; to&#34; name&#34;在python文件中,它将始终使用该字段(而不是原始名称字段),与该复选框无关。像这样:
workcenter_naam = fields.Selection(_workcentername_selection, string="Workcenter naam")
而不是:
name = fields.Selection(_workcentername_selection, string="Workcenter naam")
它在前端的样子是怎么回事。 在继承视图中选择的值,例如&#34; Bakkerij&#34;,只需要放在名称字段中。
有没有人知道如何解决这个问题?如果有任何不清楚的地方,请告诉我。
答案 0 :(得分:0)
隐藏字段时,“名称”不可见,但仍然需要
您可以保留这两个字段,但是您应该删除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>
或者你可以做你做过的事情:)
@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']