7

元のビュー:

<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>

オリジナルから継承されたビュー:

<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>

つまり、OpenERPは常に、優先度の値を無視して継承されたビューを表示します。これは予想される動作ですか、それとも私が見逃している何かがありますか?

これが予想される動作である場合は、さらにお読みください:-)

にフィールドがmy.second.objectあり、このフィールドから作成する場合は、の少し異なるフォームビューを開きます。その目的のためだけに別のビューを作成しようとしていますが、ご覧のとおり、簡単には機能しません(または機能しますか?)。many2onemy.objectmy.objectmy.object

どんな助けでも大歓迎です。

4

3 に答える 3

14

はい、これは予想される動作です。ビューの優先度は、特定のビューが要求されていない場合に使用するメイン ビューを選択するためにのみ使用されます。継承されたビューは、継承元のビューの子のように機能する「パッチ ビュー」であり、「メイン ビュー」として選択されることはありません。ビューが表示されると、常に親ビューの上に適用されます。

特定のモデルの別のビューが必要な場合は、他のビューから継承しない新しいスタンドアロン ビューを定義する必要があります。そのビューが のビューのコンテキストでのみ使用されることを意図している場合、my.second.objectOpenERP にそれを使用させるための 2 つの一般的なトリックがあります。

  • my.second.object要素の子として、のフォーム ビューでインラインで定義し<field>ます。これは、バージョンによってはすべての OpenERP クライアントで機能するとは限りませんo2m。通常、行のインライン フォーム ビューを宣言するのに最適です。
  • 優先度の低い (たとえば 32) スタンドアロン ビューとして宣言し、それを使用するビューのmany2oneフィールドにマジック コンテキスト キーを配置しmy.second.objectます。マジック キーの形式<view_type>_view_refは で、値は目的のビューの XML ID でなければなりません。これはどこでも機能するはずです。
<!-- Example 1: inline form view -->
<form string="My second object">
   <field name="my_object_id">
       <form string="My object inline view">
           <field name="name"/>
       </form>
   </field>
 </form>

<!-- Example 2: explicitly ask for special view using magic key -->
<form string="My second object">
   <field name="my_object_id" context="{'form_view_ref': 'module.my_object_form2'}"/>
</form>

参考までに、コンテキスト固有のビューを作成および使用するためのほとんどのオプションについて説明している OpenERP ドキュメントのこのページをご覧ください。

注: form_view_ref を使用し、フォーム ビューから他のモデルの別のフォーム ビューを開くボタンがある場合、エラーが発生します。別のモデルの form_view_ref で渡した同じフォーム ビューを開こうとします。

于 2012-06-04T12:31:58.997 に答える
1

どの「位置」を定義しました<field name="field_from_original_view">か?

<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 name="field_from_original_view" position="after" (or before)>
            <field name="inherit1" />
            <field name="inherit2" />
            <field name="inherit3" />
        </field>
    </field>
</record>
于 2012-06-04T11:57:52.193 に答える
0

継承されたフォームをモデルの標準フォームにして、自動的に表示される可能性がない場合があります。

しかし、特定のタスクを見ると-> one2manyフィールドの継承されたフォームビューを開きます。がある。コンテキスト変数「form_view_ref」を「MODULE.VIEW_ID」に設定します。

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

Odoo 9.0 でも動作します。

于 2016-11-18T14:50:22.833 に答える