Inheritance OpenERP 7:为什么继承的视图不是';t显示器?

Inheritance OpenERP 7:为什么继承的视图不是';t显示器?,inheritance,view,openerp,openerp-7,Inheritance,View,Openerp,Openerp 7,我试图覆盖交货订单视图中的交货按钮(即库存.拣货.取出)和相关向导中的按钮(即库存.部分.拣货) 为此,我创建了一个自定义模块:编写交货订单 deliver_button.xml 作为 编制发货单、订单、库存单、部分领料单、发货单 选股 股票、挑选、挑选、表格 选股 问题 stock.picking.out上的按钮正确替换,但stock.partial.picking中的按钮不正确。当我检查管理视图信息时,我得到: 因此,我的视图被检测到,但似乎没有被选为默认视图 问题: 如何强制使用我的

我试图覆盖交货订单视图中的
交货
按钮(即
库存.拣货.取出
)和相关向导中的按钮(即
库存.部分.拣货

为此,我创建了一个自定义模块:编写交货订单

deliver_button.xml 作为


编制发货单、订单、库存单、部分领料单、发货单
选股
股票、挑选、挑选、表格
选股
问题
stock.picking.out
上的按钮正确替换,但
stock.partial.picking
中的按钮不正确。当我检查管理视图信息时,我得到:

因此,我的视图被检测到,但似乎没有被选为默认视图

问题:
如何强制使用我的视图?

在Odoo中有两种引用视图的方法:

  • 如果(模型、类型)请求视图,则具有 型号和类型,模式=主要和最低优先级匹配
  • 当id请求视图时,如果其模式不是主视图,则 与主模式最接近的父级已匹配

  • 如果您的视图是由优先级请求的,则尝试将优先级设置为较低的值。

    经过长时间的搜索,尝试并测试我最终发现给定视图的按钮在python代码中被覆盖

    因此,要修改按钮,我必须重写模块中的方法

    #覆盖:stock/wizard/stock_partial_picking.py
    分类库存部分拣选(osv.osv\U内存):
    _inherit='stock.partial.picking'
    _rec\u name='picking\u id'
    _description=“部分拣货处理向导”
    定义字段\u view\u get(self、cr、uid、view\u id=None、view\u type='form',context=None、toolbar=False、submenu=False):
    #覆盖字段_view _get,以便根据装运类型更改流程按钮和分隔符的标签
    如果上下文为“无”:
    上下文={}
    res=super(股票部分拣选、自拣选)。字段查看获取(cr、uid、视图id=视图id、视图类型=视图类型、,
    上下文=上下文,工具栏=工具栏,子菜单=子菜单)
    type=context.get('default_type',False)
    如果类型:
    doc=etree.XML(res['arch'])
    对于doc.xpath中的节点(//按钮[@name='do_partial']):
    如果类型=='in':
    node.set('string','u接收')
    elif类型==“输出”:
    node.set('string','[\u Deliver]'))
    对于doc.xpath中的节点(“//分隔符[@name='product\u separator']”):
    如果类型=='in':
    node.set('string',uz('Receive Products'))
    elif类型==“输出”:
    node.set('string',uz('Deliver Products'))
    res['arch']=etree.tostring(doc)
    返回res
    
    如您所见,我已尝试更改优先级,但未成功。例如,将其值从15改为5。由于最低优先级是匹配的,请参见我的答案,在我的例子中,它与优先级无关,因为按钮在python代码中被覆盖。然后需要为视图定义一个新操作,然后从按钮调用新操作