2016-06-30 15 views
3

私はちょっと調べてみるだけです。 odoo 8のattrsに基づいてフィールドを非表示にすることはできますが、同じことをPythonコードで行う方法があります。以下のコードは次のとおりですので、これは作業を行いフィールドodooをpython onchangeメソッドで非表示にする

<field name="test" attrs="{'invisible':[('role', '=', 'testrole')]}" /> 

(手段フィールド名の役割は、値「テストの役割」を持っている場合、フィールドを非表示になります) それから私はとしての役割フィールド上のメソッドのonchangeでのpythonを使用して同じ機能を実現しようとしました下記:私のモデルで

<field name="role" on_change="hide(role)"/> 

def hide(self,cr,uid,ids,role) : 
    res = {'value':{}} 
    if role == 'testrole': 
     res['value']['test']['attrs']['invisible']=True 
    return res 

しかし、これは、 任意の提案を動作しませんか?

ありがとう、

答えて

2

は、私も、2番目のフィールドで道を好むが、私は好きではなく、計算されたフィールドを選択します:で、他のすべてのフィールドに自分で述べたように今、あなたはattrsを使用することができます

role = # your role field definition 
hide = field.Boolean(string='Hide', compute="_compute_hide") 

@api.depends('role') 
def _compute_hide(self): 
    # simple logic, but you can do much more here 
    if self.role == 'testrole': 
     self.hide = True 
    else: 
     self.hide = False 

そのビュー:

<field name="fieldToHide" attrs="{'invisible':[('hide', '=', True)]}" /> 
+0

おかげCZoellnerの変化に対するメソッドの実装を探しています、私はフィールドを必要とするだろうということですデータベース。それは解決策にすぎません。 – user280960

+0

実際には、このソリューションはデータベースのフィールドなしで動作します。 'hide'は計算されますが、決してデータベースには格納されません。 – CZoellner

+0

OhhありがとうCZoellner、私はこれを試してみます。ありがとうございました – user280960

0

あなたの質問に対する回答はこのリンクにあります。しかし、XMLコードでのみ不可視を使用する方が良いでしょう。さもなければ、正しく機能しません。新しいブールフィールドを作成することができます。この場合

http://stackoverflow.com/questions/31532390/invisible-true-false-parameter-exist-or-not-in-odoo-8

+0

こんにちはアハメド、それがXMLで目に見えない程度と言うが、私は、Python – user280960

1

とこのフィールドのデフォルト値はFalseに設定され、 "rol"フィールドにはinvisible = {'boolean_filed'、 '='、True} とonchangeメソッドが適用され、onchange関数の "boolean_field"値がTrueに設定されます。

bool = field.boolean('Boolean') 

_default { 'bool': False } 


def hide(self,cr,uid,ids,role) : 
    res = {'value':{}} 
    if role == 'testrole': 
     res['bool']=True 
    return res 
関連する問題