如何在保存父表单之前使One2many树视图中的计算字段可见

时间:2017-05-24 10:51:20

标签: python openerp odoo-10

我有这样的农场是形式,One2many字段呈现为树视图:

<field name="o2m_field" options='{"always_reload": True}' nolabel="1" widget="one2many_list" mode="tree,kanban" context="{'form_view_ref': 'my_customer_form'}">
                                <tree string="Route Location">
                                    <field name="name"/>
                                    <!-- name consists of address city and code -->
                                    <field name="address" invisible="1"/>
                                    <field name="city" invisible="1"/>
                                    <field name="code" invisible="1"/>
                                </tree>
                            </field>

当我点击添加项目时,正在打开新表单。当我填充数据并单击“保存并关闭”时,所有内容都会显示在我的o2many树中。只有当我点击父窗体上的保存时,名称才会显示。

计算领域的Python代码:

name = fields.Char(readonly=True, compute='name_line', store=True)


@api.one
@api.depends('name', 'address', 'city', 'code')
def name_line(self):
    cust_name = ''
    if self.address:
        cust_name += self.address + '/'

    if self.load_city:
        cust_name += self.load_city + '/'

    if self.load_postcode:
        cust_name += self.load_postcode + '/'

    if len(cust_name) > 0:
        if cust_name[-1] == '/':
            cust_name = cust_name[:-1]

    if self.name != cust_name:
        self.name = cust_name

我尝试制作always_reload,stored = false以及其他一些我甚至无法记住的解决方案。在此工作几个小时(天)

感谢您抽出宝贵的时间考虑我的问题,祝您度过愉快的一天!

1 个答案:

答案 0 :(得分:0)

您应该尝试为on_change字段添加address, city & postalcode个字段,这将计算name字段,并在您保存表单数据之前显示它。