3

次のオブジェクトと対応するビューを検討します。

class first_object(osv.osv):
    _name = "first.object"
    _columns = {
                'id': fields.integer ('First ID'),
                'flag': fields.boolean ('Flag'),
                'second_object_id': fields.one2many('second.object','first_object_id')
    }

class second_object(osv.osv):
    _name = "second.object"
    _columns = {
                'id': fields.integer ('Second ID'),
                'first_object_id': fields.many2one('first.object','random field'),
                'field_x': fields.float('x',size=128),
                'field_y': fields.float('y',size=128),
    }

<record model="ir.ui.view" id="first_object_view_id">
    <field name="name">Frist Object</field>
    <field name="model">first.object</field>
    <field name="type">form</field>
    <field name="arch" type="xml">
        <form>
            <notebook>
                <page>
                    <field name="id"></field>
                    <field name="flag"></field>
                    <field name="second_object_id">
                        <tree editable="top">
                            <field name="field_x" attrs="{'invisible':[('flag','=',True)]}"/>
                            <field name="field_y"/>
                        </tree>
                        <form>
                            <field name="field_x"/>
                            <field name="field_y"/>
                        </form>
                    </field>
                </page>
            </notebook>
        </form>
    </field>
</record>

フラグという名前の最初のオブジェクトのフィールドに基づいている、ツリー内のfield_xという名前の2番目のオブジェクトのフィールドに対して現在持っている属性に注意してください。

まず、この場合の属性は完全に無視されます。なぜうまくいかないのかわかりません。次に、これが機能せず、属性がローカルフィールドを参照する必要があると仮定すると、非表示属性はツリービューでは機能せず、フォームビューでのみ機能します。ただし、ツリーに単純なinvisible = "1"を設定すると、問題なく機能します(これに頼ることはできません。属性で提供するルールが必要です)。何か案は?

編集:
問題は、TREEビューの属性を介してフィールドを非表示にする(invisible = "1"ではない)ようです。フォームで正常に動作します。これができれば、私の問題は解決します。

編集2:
many2oneとone2manyの代わりに、別々のビュー定義とローカルフィールドを試してみましたが、役に立ちませんでした。しかし、私はなんとかしてこれを達成することができましたinvisible="context.get('xxx',True/False)"。問題は、条件が一致すると、条件が一致しない新しいレコードを作成した後でも表示されないままになることです。

4

5 に答える 5

1

stock.moveからstock_move_treeを調べてください

<field name="prodlot_id" groups="base.group_extended"/>
<button name="%(track_line)d" string="Split in production lots" type="action"
   icon="terp-stock_effects-object-colorize" attrs="{'invisible': [('prodlot_id','&lt;&gt;',False)]}"
   states="draft,waiting,confirmed,assigned,done"
   groups="base.group_extended"/>
<field groups="base.group_extended" name="tracking_id"/>
<button name="setlast_tracking" string="Put in current pack" type="object"
   groups="base.group_extended"
   icon="terp-stock_effects-object-colorize" attrs="{'invisible': [('tracking_id','&lt;&gt;',False)]}"
   states="draft,assigned,confirmed,done"/>

同じ解決策ですが、ボタン用であり、通常のフィールド用ではありません。はい、フィールドを削除しますが、空の列を表示します。

于 2012-12-13T11:40:03.637 に答える
1

条件付きの非表示属性を設定しようとしても、実際のビューには影響しないようです。invisible="1"のみ。これは、列全体が非表示になっていない非表示のフィールドを持つツリービューを想像できないため、理にかなっています。

于 2012-12-16T19:00:53.400 に答える
0

second.ojectのフラグに関連フィールドを追加します

class second_object(osv.osv):
_name = "second.object"
_columns = {
            'id': fields.integer ('Second ID'),
            'flag': fields.related('first_object_id', 'flag', type='boolean',  relation='first.object', string='Flag'),
            'first_object_id': fields.many2one('first.object','random field'),
            'field_x': fields.float('x',size=128),
            'field_y': fields.float('y',size=128),
}

次に、ビューに非表示および属性としてフィールドフラグを追加します。

<record model="ir.ui.view" id="first_object_view_id">
<field name="name">Frist Object</field>
<field name="model">first.object</field>
<field name="type">form</field>
<field name="arch" type="xml">
    <form>
        <notebook>
            <page>
                <field name="id"></field>
                <field name="flag"></field>
                <field name="second_object_id">
                    <tree editable="top">
                        <field name="flag" invisible="1"/>
                        <field name="field_x" attrs="{'invisible':[('flag','=',True)]}"/>
                        <field name="field_y"/>
                    </tree>
                    <form>
                        <field name="field_x"/>
                        <field name="field_y"/>
                    </form>
                </field>
            </page>
        </notebook>
    </form>
</field>

于 2012-12-12T22:17:48.800 に答える
0

Object2に1つの新しいフィールド(つまりブール型フィールド)を追加しました。

object1の「flag」フィールドにonchnageを作成します。

そのonchnageで、設定します-フラグフィールドの値に従って、この新しいフィールドの値をリセットします。

そして、Flagの代わりにこのnew_fieldにattrsを置きます。

これがあなたを助けることを願っています

于 2012-12-13T12:42:43.867 に答える
0

モデル「second.object」のビューを個別に定義してください。同じ例は、ストックモジュールのウィザードフォルダ内のstock_partial_picking.pyファイルにあります。確認してください。あなたは彼の答えでユーザーuser1888049が言ったようにフィールドを定義する必要があるかもしれません

于 2012-12-13T13:28:22.247 に答える