实现效果图:
在使用Odoo ERP系统时,我们经常需要对大量数据进行批量编辑。Odoo的tree
视图提供了一个非常方便的界面来查看和编辑记录,但它默认不支持在one2many
字段上的批量编辑。本文将介绍如何通过在form
视图中添加一个特殊按钮,来实现在one2many
字段的tree
视图中进行批量编辑的功能。
问题背景
Odoo官方的tree
视图支持multi_edit
属性,这使得用户可以在列表视图中轻松地选择多条记录进行编辑。然而,这个功能默认不适用于嵌入在表单中的one2many
字段。为了解决这个问题,我们可以采用以下方法。
解决方案
解决方案的关键是在form
视图中定义一个按钮,当点击这个按钮时,它将打开一个新的tree
视图,显示当前记录的相关明细,从而允许用户进行批量编辑。
步骤1: 定义按钮
在表单视图的XML定义中,添加以下按钮元素:
<button string="Multi Edit" class="oe_highlight" type="object" name="button_open_tree_view"/>
这个按钮被定义为一个对象类型的操作,将触发一个名为button_open_tree_view
的Python方法。
步骤2: 创建动作方法
在相应的Odoo模型中,定义button_open_tree_view
方法:
def button_open_tree_view(self):
action = {
'type': 'ir.actions.act_window',
'name': 'Multi edit',
'view_mode': 'tree',
'target': 'new',
'res_model': 'domestic.expense.line',
'domain': [('id', 'in', self.expense_line.ids)],
}
return action
这个方法创建了一个动作,它打开一个新窗口,显示当前记录的domestic.expense.line
明细行。
步骤3: 视图代码
<record id="domestic_expense_line_view_tree" model="ir.ui.view">
<field name="name">Domestic Expense Line View Tree</field>
<field name="model">domestic.expense.line</field>
<field name="arch" type="xml">
<tree create="0" delete="0" multi_edit="1" editable="bottom" sample="1">
<field name="sequence" optional="hide"/>
<field name="location" optional="hide"/>
<field name="expense_type" optional="show"/>
<field name="tax_rate" optional="hide"/>
<field name="cost_center" optional="hide"/>
<field name="profit_center" optional="hide"/>
<field name="brand_id" optional="hide"/>
<field name="custom_id" optional="hide"/>
<field name="service_no" optional="hide"/>
<field name="valid_from" optional="hide"/>
</tree>
</field>
</record>
步骤4: 批量编辑功能
用户现在可以在弹出的tree
视图中选择多条记录,并利用Odoo的标准批量编辑功能来编辑它们。
结论
通过上述步骤,我们可以在Odoo中实现一个方便的批量编辑功能,尤其适用于处理one2many
字段的场景。这不仅提高了数据处理的效率,也提升了用户体验。这样就可以巧妙的运用上官方的批量修改功能了。
标签:批量,行中,tree,视图,编辑,按钮,明细,Odoo From: https://blog.51cto.com/u_14480405/9030037