我在 product.template 看板视图上创建了一个新按钮。该按钮在看板视图的每个产品下正确显示。
当用户点击其中一个按钮时,我想在表单视图中使用产品变量(product.product model)id 1362。
上下文很好地传递给了行动。我已经验证了日志信息。但是新窗口没有打开。当我单击按钮时,我在日志中看到触发了操作但新窗口没有出现。没错。
<record id="product_template_kanban_view_inherited" model="ir.ui.view">
<field name="name">Product.template.kanban.view.inherited</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="product.product_template_kanban_view" />
<field name="arch" type="xml">
<xpath expr="//div[@name='tags']" position="after">
<button name="open_product_variant" string="test" context="{'res_id': 1362}" type="object" />
</xpath>
</field>
</record>
from openerp import models, fields, api
import logging
_logger = logging.getLogger(__name__)
class product_template(models.Model):
_inherit = "product.template"
@api.one
def open_product_variant(self):
_logger.error("open_product_variant")
resid = self._context.get('res_id')
_logger.error(" resid :: %s", str(resid))
res = {
'type': 'ir.actions.act_window',
'view_mode': 'form',
'view_type': 'form',
'res_model': 'product.product',
'target': 'current',
'res_id': resid,
'view_id': False,
'domain': False,
}
return res
答案 0 :(得分:0)
我试图在旧的api中重新定义我的python方法,并且它在第一次拍摄时起作用! 我知道原始的product.template类在odoo 8中继承了osv.osv。对我来说,这意味着这个类是用旧的api编写的。 有时我设法用新api覆盖一些旧类,但这一次,我会忘记它。 我总是喜欢使用新的API。
如果有人设法纠正我上面的代码(新api),我会改为使用它。
import logging
_logger = logging.getLogger(__name__)
from openerp.osv import osv
class product_template(osv.osv):
_inherit = "product.template"
def test(self, cr, uid, ids, context=None):
_logger.error("open_product_variant")
resid = context.get('res_id')
_logger.error(" resid :: %s", str(resid))
res = {
'type': 'ir.actions.act_window',
'view_mode': 'form',
'view_type': 'form',
'res_model': 'product.product',
'target': 'current',
'res_id': resid,
'view_id': False,
'domain': False,
}
return res