OpenERP始终显示继承的视图而不是原始视图

OpenERP始终显示继承的视图而不是原始视图,openerp,Openerp,原始视图: <record id='view_1' model='ir.ui.view'> <field name="name">view.name</field> <field name="model">my.object</field> <field name="priority" eval="17"/> <field name="type">form</field>

原始视图:

<record id='view_1' model='ir.ui.view'>
    <field name="name">view.name</field>
    <field name="model">my.object</field>
    <field name="priority" eval="17"/>
    <field name="type">form</field>
    <field name="arch" type="xml">
        ...
    </field>
</record>

view.name
我的目标
形式
...
从原始视图继承的视图:

<record id='view_2' model='ir.ui.view'>
    <field name="name">view.name</field>
    <field name="model">my.object</field>
    <field name="priority" eval="10"/>
    <field name="inherit_id" ref="view_1"/>
    <field name="type">form</field>
    <field name="arch" type="xml">
        ...
    </field>
</record>

view.name
我的目标
形式
...
因此,OpenERP总是显示继承的视图,忽略优先级值。这是我的预期行为,还是我还遗漏了什么

如果这是预期的行为,请进一步阅读:-)

我有
my.second.object
manyOne
字段到
my.object
,当我想从这个字段创建
my.object
时,我想打开一个稍微不同的
my.object
表单视图。我正试图为此目的创建一个不同的视图,但正如您所看到的,它并不那么容易工作(或者确实如此?)

非常感谢您的帮助。

您在
中定义了什么“职位”


view.name
我的目标
形式

是,这是预期的行为。视图的优先级仅用于在未请求特定视图时选择要使用的主视图。继承视图是“面片视图”,其行为类似于它们继承自的视图的子视图,并且可能永远不会被选为“主视图”。显示父视图时,它们始终应用于父视图的顶部

如果需要某个模型的替代视图,则应定义一个不从任何其他模型继承的新独立视图。如果该视图仅在
my.second.object
视图的上下文中使用,则有两个常见的技巧可以让OpenERP使用它:

  • my.second.object
    的表单视图中内联定义它,作为
    元素的子元素。这可能不适用于所有OpenERP客户端,具体取决于版本,通常最适合于为
    o2m
    行声明内联表单视图
  • 将其声明为低优先级的独立视图(例如32),并在应使用它的
    my.second.object
    视图的
    manyOne
    字段中放置一个魔术上下文键。魔术键的格式为
    \u view\u ref
    ,该值必须是所需视图的XML ID。这应该适用于所有地方

作为参考,请参阅OpenERP文档,该文档解释了创建和使用特定于上下文的视图的大多数选项

注意:如果您使用了form\u view\u ref,如果您使用了from form view 打开其他模型的其他窗体视图的任何按钮 它会给你错误。它将尝试打开与您相同的表单视图 也已传递另一个模型的表单\视图\参考


可能无法将继承的表单作为模型的标准表单,以便自动显示该表单

但如果查看特定任务-->打开one2many字段的继承表单视图,例如。;有。将上下文变量“form\u view\u ref”设置为“MODULE.view\u ID”

<field name="myOne2ManyField" context="{'form_view_ref': 'myModule.myInheritedView'}/>

我用
替换了
,但这与我的问题有关吗?问题是OpenERP即使在应该使用原始视图的地方也使用了我的继承视图。也许当您使用“替换”时,OpenERP将原始视图替换为继承视图?虽然这两种方法都没有提供解决问题的干净方法,但它确实回答了我的问题。Cheers@and3p:不确定您希望用什么“干净的方式”来解决您的问题?你是说你认为OpenERP会有不同的表现还是提供其他选择?您是否希望有第二种视图继承,也允许复制“主视图”?当前系统的设计目的是通过对“父视图”定义的视图进行局部修改,允许各种组合,从而使模块能够干净地相互扩展。现在,我必须创建一个“主视图”的副本(除了一些修改)视图,以便与
my.second.object
一起使用,什么引入了代码冗余。如果我使用视图继承,我希望我不需要求助于代码复制,但是由于
继承的视图是“补丁视图”…
其他选项是不可能的。如果我对视图继承的理解是错误的,请纠正我。@3P:的确,视图继承并不意味着允许复制+修补,而只是暂时修补。如果非常需要允许复制,我们可以在框架中引入对它的支持。顺便说一句,复制+修补程序有一种方法,但它只适用于复制的模型(即,使用_inherit='model1'和_name='model2')。在这种情况下,可以为model2声明继承的视图,但仍然可以从model1视图继承。我认为使用primary可以让两个视图并排显示,并分别显示它们。
<field name="myOne2ManyField" context="{'form_view_ref': 'myModule.myInheritedView'}/>