7

Odoo フォーム ビューで条件付きでフィールドを非表示にしようとしています。「販売可能」がチェックされている場合 ==> 「プロダクトマネージャー」は非表示にする必要があります:

ここに画像の説明を入力

ここに画像の説明を入力

製品フォームの継承されたビューで、ドメインで属性「非表示」を使用してみました:

<record model="ir.ui.view" id="product_template_form_inherit">
    <field name="name">product.template.product.form</field>
    <field name="model">product.template</field>
    <field name="inherit_id" ref="product.product_template_only_form_view" />
    <field name="arch" type="xml">
        <field name="product_manager"  position="attributes">
                    <attribute name="invisible">[('sale_ok', '=', True)]</attribute>
        </field>    
</field>
</record>

フィールド sales_ok が true の場合、product_manager フィールドは実際には非表示になります。しかし、フィールド sales_ok が再び false になるとフィールド product_manager は非表示のままになります。

代わりにこれも試しました:

<field name="product_manager" attrs="{'invisible': [('sale_ok', '=', True)]}"/>

これもうまくいきません。

次のような他のドメインも試しました。

[('sale_ok', '==', True)]
[('sale_ok', '!=', False)]
[('sale_ok', '=', 'True')]

ここで何が問題なのかよくわかりません...チェックされている(チェックされていない)ときにそれを(見えないように)する方法は?

私が最終的に求めているのは、次のことです。チェックボックスがオンになっている場合、フォームは保存せずにすぐに変更されます。フィールドを追加および削除する必要があります。それは可能ですか?

編集:

ChesuCR の回答を使用して、プロダクト マネージャーを非表示/非表示にできるようになりました。ただし、「loc_rack」(Storage Location==>Rack) で同じことを試みると、エラーが発生します。

Field(s) `arch` failed against a constraint: Invalid view definition

Error details:
Element '<field name="loc_rack">' cannot be located in parent view

これは私が使用したコードです:

<field name="loc_rack"  position="replace">
    <field name="loc_rack" attrs="{'invisible': [('sale_ok', '=', True)]}"/>
</field>

このフィールドで同じことができないのはなぜですか?

4

2 に答える 2

6

使用position="replace"すると問題が発生する可能性があります。最適なオプションは使用することですposition="attributes"

別のインストール済みモジュール (モジュール X という名前) が、置き換えているタグを継承しているとします。Odoo システムを更新すると、モジュール X が置き換えたタグを見つけられないため、システムがクラッシュします。

このコードは私にとって完璧に機能します:

<field name="product_manager"  position="attributes">
    <attribute name="attrs">{'invisible': [('sale_ok', '=', True)]}</attribute>
</field>
于 2016-11-25T18:49:24.100 に答える
6

これは私にはうまくいきます

<record id="custom_product_template_form_view" model="ir.ui.view">
    <field name="name">custom.product.template.form</field>
    <field name="model">product.template</field>
    <field name="inherit_id" ref="product.product_template_form_view" />
    <field name="arch" type="xml">
        <field name="product_manager"  position="replace">
            <field name="product_manager" attrs="{'invisible': [('sale_ok', '=', True)]}"/>
        </field>
    </field>  
</record>

attrs問題が見つかった場合は、属性を変更するためだけに「federico」の回答を試すことができます。元のフォームに既に存在する場合、私のソリューションは他の属性を変更または削除する可能性があります。

于 2015-08-28T08:08:15.560 に答える