Odoo12:如何在没有弹出窗口的情况下从树视图显示窗体视图?

Odoo12:如何在没有弹出窗口的情况下从树视图显示窗体视图?,odoo,odoo-12,Odoo,Odoo 12,我将此字段(one2many)设置为: <field name="utenzeEE_ids" context="{'default_id_immobile':active_id}"> <tree> <field name="pod"/> <field name="matricola"/> <field name="tipo"/> <field n

我将此字段(one2many)设置为:

   <field name="utenzeEE_ids" context="{'default_id_immobile':active_id}"> 
   <tree> 
        <field name="pod"/> 
        <field name="matricola"/> 
        <field name="tipo"/> 
        <field name="indirizzo"/> 
        <field name="sub"/> 
        <field name="dal"/> 
        <field name="al"/> 
        <field name="id_cig" widget="selection"/> 
    </tree>
    <form> 
        <header></header> 
        <sheet> 
            <group> 
                <field name="pod"/> 
                <field name="matricola"/> 
                <field name="tipo"/> 
                <field name="indirizzo"/> 
                <field name="sub"/> 
                <field name="dal"/> 
                <field name="al"/> 
                <field name="id_cig" widget="many2one_list"/> 
                <field name="id_misuratore" widget="many2one_list"/> 
                <field name="id_immobile" widget="many2one_list"/> 
                <field name="attivitasvolte_ids" widget="one2many_list"/> 
            </group> 
        </sheet> 
    </form>
    </field>
1-将函数放在one2many(“详细模型”)的模型中是否正确

2-
view=self.env.ref('module.form\u view\u name')
我不明白我要放在这里的是哪个模块,让我解释一下,我有“utilitpower.immobili”这是表单视图的模块,其中有按钮的树,还有“utilitpower.utinze\ee”是细节视图的模块。我认为这是操作的目标模块,因为我们将其用于视图id和视图参数(根据),是否正确

3-
'res_model':'model for eg:hr.payslip',
这里我知道我必须插入该模型以显示视图,因此在我的例子中是utilitypower.utinze_ee

如果我在尝试单击按钮时所做的操作是正确的,则会出现以下错误:

Odoo Server Error
Traceback (most recent call last):
  File "/opt/odoo/odoo12/odoo/tools/cache.py", line 88, in lookup
    r = d[key]
  File "/opt/odoo/odoo12/odoo/tools/func.py", line 69, in wrapper
    return func(self, *args, **kwargs)
  File "/opt/odoo/odoo12/odoo/tools/lru.py", line 44, in __getitem__
    a = self.d[obj].me
KeyError: ('ir.model.data', <function IrModelData.xmlid_lookup at 0x7fe3b62f5400>, 'utilitypower.immobili')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/odoo/odoo12/odoo/http.py", line 654, in _handle_exception
    return super(JsonRequest, self)._handle_exception(exception)
  File "/opt/odoo/odoo12/odoo/http.py", line 312, in _handle_exception
    raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
  File "/opt/odoo/odoo12/odoo/tools/pycompat.py", line 87, in reraise
    raise value
  File "/opt/odoo/odoo12/odoo/http.py", line 696, in dispatch
    result = self._call_function(**self.params)
  File "/opt/odoo/odoo12/odoo/http.py", line 344, in _call_function
    return checked_call(self.db, *args, **kwargs)
  File "/opt/odoo/odoo12/odoo/service/model.py", line 97, in wrapper
    return f(dbname, *args, **kwargs)
  File "/opt/odoo/odoo12/odoo/http.py", line 337, in checked_call
    result = self.endpoint(*a, **kw)
  File "/opt/odoo/odoo12/odoo/http.py", line 939, in __call__
    return self.method(*args, **kw)
  File "/opt/odoo/odoo12/odoo/http.py", line 517, in response_wrap
    response = f(*args, **kw)
  File "/opt/odoo/odoo12/addons/web/controllers/main.py", line 966, in call_button
    action = self._call_kw(model, method, args, {})
  File "/opt/odoo/odoo12/addons/web/controllers/main.py", line 954, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/opt/odoo/odoo12/odoo/api.py", line 749, in call_kw
    return _call_kw_multi(method, model, args, kwargs)
  File "/opt/odoo/odoo12/odoo/api.py", line 736, in _call_kw_multi
    result = method(recs, *args, **kwargs)
  File "/opt/odoo/odoo12-custom-addons/utility_power/models/utilitypower_ee_utenze.py", line 23, in action_view_form_modelname
    view = self.env.ref('utilitypower.utenze_ee')
  File "/opt/odoo/odoo12/odoo/api.py", line 854, in ref
    return self['ir.model.data'].xmlid_to_object(xml_id, raise_if_not_found=raise_if_not_found)
  File "/opt/odoo/odoo12/odoo/addons/base/models/ir_model.py", line 1396, in xmlid_to_object
    t = self.xmlid_to_res_model_res_id(xmlid, raise_if_not_found)
  File "/opt/odoo/odoo12/odoo/addons/base/models/ir_model.py", line 1380, in xmlid_to_res_model_res_id
    return self.xmlid_lookup(xmlid)[1:3]
  File "<decorator-gen-25>", line 2, in xmlid_lookup
  File "/opt/odoo/odoo12/odoo/tools/cache.py", line 93, in lookup
    value = d[key] = self.method(*args, **kwargs)
  File "/opt/odoo/odoo12/odoo/addons/base/models/ir_model.py", line 1369, in xmlid_lookup
    raise ValueError('External ID not found in the system: %s' % xmlid)
ValueError: External ID not found in the system: utilitypower.immobili
Odoo服务器错误
回溯(最近一次呼叫最后一次):
文件“/opt/odoo/odoo12/odoo/tools/cache.py”,第88行,在查找中
r=d[键]
包装器中的文件“/opt/odoo/odoo12/odoo/tools/func.py”,第69行
返回函数(self、*args、**kwargs)
文件“/opt/odoo/odoo12/odoo/tools/lru.py”,第44行,在__
a=self.d[obj].me
KeyError:('ir.model.data','utilitypower.immobili')
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/opt/odoo/odoo12/odoo/http.py”,第654行,在异常处理中
返回super(JsonRequest,self)。\u handle\u异常(exception)
文件“/opt/odoo/odoo12/odoo/http.py”,第312行,在异常处理中
raise pycompat.reraise(类型(异常)、异常、sys.exc_info()[2])
文件“/opt/odoo/odoo12/odoo/tools/pycompat.py”,第87行,重新登录
增值
文件“/opt/odoo/odoo12/odoo/http.py”,第696行,发送中
结果=self.\u调用函数(**self.params)
文件“/opt/odoo/odoo12/odoo/http.py”,第344行,在调用函数中
返回选中的\u调用(self.db、*args、**kwargs)
文件“/opt/odoo/odoo12/odoo/service/model.py”,第97行,在包装器中
返回f(数据库名,*args,**kwargs)
文件“/opt/odoo/odoo12/odoo/http.py”,第337行,在checked_调用中
结果=自身终点(*a,**kw)
文件“/opt/odoo/odoo12/odoo/http.py”,第939行,在调用中__
返回自方法(*参数,**kw)
文件“/opt/odoo/odoo12/odoo/http.py”,第517行,作为响应
响应=f(*参数,**kw)
文件“/opt/odoo/odoo12/addons/web/controllers/main.py”,第966行,调用按钮
action=self.\u调用\u kw(模型、方法、参数,{})
文件“/opt/odoo/odoo12/addons/web/controllers/main.py”,第954行,输入
返回调用(request.env[model],方法,args,kwargs)
文件“/opt/odoo/odoo12/odoo/api.py”,第749行,在call\u kw中
return\u call\u kw\u multi(方法、模型、参数、kwargs)
文件“/opt/odoo/odoo12/odoo/api.py”,第736行,在调用中
结果=方法(recs、*args、**kwargs)
文件“/opt/odoo/odoo12自定义加载项/utility\u power/models/utilitypower\u ee\u utineze.py”,第23行,在操作中\u视图\u表单\u modelname
视图=self.env.ref('utilitypower.utinze\u ee'))
文件“/opt/odoo/odoo12/odoo/api.py”,第854行,参考
将self['ir.model.data'].xmlid_返回给_对象(xml_id,如果未找到则提升=如果未找到则提升)
xmlid_to_对象中的文件“/opt/odoo/odoo12/odoo/addons/base/models/ir_model.py”,第1396行
t=self.xmlid_to_res_model_res_id(xmlid,如果找不到则引发)
文件“/opt/odoo/odoo12/odoo/addons/base/models/ir_model.py”,第1380行,xmlid_to_res_model_id
返回self.xmlid_查找(xmlid)[1:3]
xmlid_查找中的文件“”,第2行
文件“/opt/odoo/odoo12/odoo/tools/cache.py”,第93行,在查找中
value=d[key]=self.method(*args,**kwargs)
xmlid_查找中的文件“/opt/odoo/odoo12/odoo/addons/base/models/ir_model.py”,第1369行
raise VALUERROR('在系统中找不到外部ID:%s'%xmlid)
ValueError:在系统中找不到外部ID:utilitypower.immobili

我错在哪里?

请使用one2many树状视图中“id\u cig”字段后的以下按钮

<button string="View" 
                name="action_view_form_modelname" 
                type="object" 
                class="oe_highlight"/>  
在树状视图中单击按钮时,将重定向到记录的特定表单视图

我将用一个销售订单行树状视图的示例向您解释,您必须看到不带弹出窗口的销售订单行表单视图。您给出的Xml代码是正确的

必须在Python文件sale.order.line中编写的Python代码。例如:

class HrPayslip(models.Model):
    _inherit = 'sale.order.line'

    @api.multi
    def action_view_form_modelname(self):
        view = self.env.ref('sale.form_view_xml_id')
        return {
            'type': 'ir.actions.act_window',
            'view_type': 'form',
            'view_mode': 'form',
            'res_model': 'sale.order.line',
            'views': [(view.id, 'form')],
            'view_id': view.id,
            'res_id': self.id,
            'context': self.env.context,
        }
让我澄清你的疑问:

  • view=self.env.ref('module.form\u view\u name')——模块表示表单视图已写入哪个模块,例如:在销售模块中,销售订单行表单视图已写入,因此您必须给出视图的sale.xml id,而不必弹出窗口。 如果已在新模块中写入视图,请给出模块名称并加上“.”,然后提及表单viewid。待售订单表单视图为“查看订单表单”

  • “res_模型”:“例如的模型:hr.paysslip”-在本节中,您必须提供您想要查看的模型名称。例如:点击查看按钮后,您必须看到销售订单行,然后提及sale.order.line


  • 请在one2many树视图中的“id\u cig”字段后使用下面的按钮

    <button string="View" 
                    name="action_view_form_modelname" 
                    type="object" 
                    class="oe_highlight"/>  
    
    在树状视图中单击按钮时,将重定向到记录的特定表单视图

    我将用一个销售订单行树状视图的示例向您解释,您必须看到不带弹出窗口的销售订单行表单视图。您给出的Xml代码是正确的

    必须在Python文件sale.order.line中编写的Python代码。例如:

    class HrPayslip(models.Model):
        _inherit = 'sale.order.line'
    
        @api.multi
        def action_view_form_modelname(self):
            view = self.env.ref('sale.form_view_xml_id')
            return {
                'type': 'ir.actions.act_window',
                'view_type': 'form',
                'view_mode': 'form',
                'res_model': 'sale.order.line',
                'views': [(view.id, 'form')],
                'view_id': view.id,
                'res_id': self.id,
                'context': self.env.context,
            }
    
    让我澄清你的疑问:

  • view=self.env.ref('module.form\u view\u name')——模块表示表单视图已写入哪个模块,例如:在销售模块中,销售订单行表单视图已写入,因此您必须给出视图的sale.xml id,而不必弹出窗口。 如果已在新模块中写入视图,请给出模块名称并加上“.”,然后提及表单viewid。待售订单表单视图为“查看订单表单”

  • “res_mod
    class HrPayslip(models.Model):
        _inherit = 'sale.order.line'
    
        @api.multi
        def action_view_form_modelname(self):
            view = self.env.ref('sale.form_view_xml_id')
            return {
                'type': 'ir.actions.act_window',
                'view_type': 'form',
                'view_mode': 'form',
                'res_model': 'sale.order.line',
                'views': [(view.id, 'form')],
                'view_id': view.id,
                'res_id': self.id,
                'context': self.env.context,
            }