答案 0 :(得分:1)
我担心,据我所知,在Odoo中你想做的事情是不可能的。
原因是视图中的字段直接映射到模型中的字段,而字段又映射到数据库。
我非常肯定你可以使用像JQuery这样的东西来修改DOM并随意将输入字段插入到DOM中,但是那些输入元素会没用,因为没有办法获得他们的价值或与他们合作,因为他们不会以任何方式与Odoo联系在一起。
我怀疑您正在处理X Y问题。
您实际上可以这样做,但是当您使用Odoo而不是模块构建网站时,就可以了。
模块最接近的是使用xpath
删除和添加字段。但是当您添加字段时,这些字段必须存在于您的模型定义中才能对您有用。
答案 1 :(得分:0)
是的,您可以做到。 第一个解决方案:由于所有视图都在“ ir.ui.view”中定义,因此您可以在特定视图的列上编写,因此可以创建一个新视图。
第二种解决方案:有一个名为fields_view_get的方法,该方法将向您返回与该对象相关的视图,因此您可以调用super方法并进行更改并返回对象,如下面示例中来自'crm所示。领导'
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