在Odoo 11中是否可以将字段动态添加到树形视图中?

时间:2018-11-30 23:48:10

标签: python python-2.7 odoo odoo-11 odoo-view

我需要在分析帐户的“费用和收入”行中显示每种货币,我需要为每张发票所具有的不同货币动态添加列,并在下面显示总计(模拟“金额”列的行为已经存在),有没有办法做到这一点,或者有类似结果的解决方法?

分析科目行已经以原始货币存储了金额,并将转换后的货币存储为公司货币。

我想通过为每种货币手动添加一个字段来避免发疯。

这是一个例子。

example

1 个答案:

答案 0 :(得分:0)

您可以使用fields_view_get方法从python代码动态更新视图(在呈现视图之前)。这只是我在Odoo中找到的一个示例:

@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
    res = super(MailThread, self).fields_view_get(
        view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu
    )
    if view_type == 'form':
        doc = etree.XML(res['arch'])
        for node in doc.xpath("//field[@name='message_ids']"):
            # the 'Log a note' button is employee only
            options = safe_eval(node.get('options', '{}'))
            is_employee = self.env.user.has_group('base.group_user')
            options['display_log_button'] = is_employee
            # save options on the node
            node.set('options', repr(options))
        res['arch'] = etree.tostring(doc, encoding='unicode')
    return res

将其放置在模型中。用doc.xpath查找列字段,并用node.set

更新

实际上是Juan Salcedo在评论中所说的