Openerp 在Odoo中动态添加/删除输入字段

Openerp 在Odoo中动态添加/删除输入字段,openerp,Openerp,我想在表单中动态添加和删除输入字段,但我不知道这是否可行,也不知道如何实现。有人能帮我解决这个问题吗 我想创建如下内容: 据我所知,恐怕在奥多你想做的事是不可能的 原因是视图中的字段直接映射到模型中的字段,而模型中的字段又映射到数据库 我敢肯定,通过一些黑客攻击,您可以使用JQuery之类的工具来修改DOM,并在DOM中任意插入输入字段,但这些输入元素将毫无用处,因为无法获取它们的值或使用它们,因为它们不会以任何方式与Odoo绑定 我怀疑你在处理一个问题 实际上,你可以这样做,但那是当你用Odo

我想在表单中动态添加和删除输入字段,但我不知道这是否可行,也不知道如何实现。有人能帮我解决这个问题吗

我想创建如下内容:


据我所知,恐怕在奥多你想做的事是不可能的

原因是视图中的字段直接映射到模型中的字段,而模型中的字段又映射到数据库

我敢肯定,通过一些黑客攻击,您可以使用JQuery之类的工具来修改DOM,并在DOM中任意插入输入字段,但这些输入元素将毫无用处,因为无法获取它们的值或使用它们,因为它们不会以任何方式与Odoo绑定

我怀疑你在处理一个问题

实际上,你可以这样做,但那是当你用Odoo而不是模块构建网站时

使用模块最接近的方法是使用
xpath
删除和添加字段。但在添加字段时,这些字段必须存在于模型定义中,才能对您有用。

是的,您可以这样做。 第一个解决方案:由于所有视图都是在“ir.ui.view”中定义的,因此您可以在特定视图的列上进行写入,因此您可以创建一个新视图

第二个解决方案:有一个名为fields\u view\u get的方法,它将向您返回与该对象相关的视图,因此您可以调用super方法并进行更改,然后从“crm.lead”返回下面示例中所示的对象

 def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
    if view_type == 'form' and context and context.get('opportunity_id'):
        # TODO: replace by get_formview_action call
        lead_type = self.browse(cr, user, context['opportunity_id'], context=context).type
        view_lead_xml_id = 'crm_case_form_view_oppor' if lead_type == 'opportunity' else 'crm_case_form_view_leads'
        _, view_id = self.pool['ir.model.data'].get_object_reference(cr, user, 'crm', view_lead_xml_id)
    res = super(crm_lead,self).fields_view_get(cr, user, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
    if view_type == 'form':
        res['arch'] = self.fields_view_get_address(cr, user, res['arch'], context=context)
    return res

谢谢,丹尼迪。我也这么想,但我需要确认一下。