2017-02-08 10 views
0

私はemploymentstatusモデルのres.partnerモデルの選択フィールドを持っています。オプションはemployed またはunemployedです。別のフィールドを入力したい場合employmenttyperequired=Trueemploymentstatus='employed' またはrequired=Falseの場合はemploymentstatus='unemployed'です。フィールドは、パートナーが を採用しているかどうかにかかわらず、Trueに設定する必要があります(添付の画像hereを参照)。必要な属性がデータベースに格納されることが予想され、その場で計算されることを意味しない別のフィールドの値に基づいて、フィールドの属性をrequired = Trueまたはrequired = Falseに設定するにはどうすればよいですか?

from openerp.osv import osv, fields 
from openerp import tools 
class custom_fields_partner(osv.Model): 
    _inherit = 'res.partner' 
    _columns = { 
     'employmentstatus' : fields.selection([ 
     ('employed','Employed'), 
     ('unemployed','Unemployed') 
     ],'Employment status', required=True, default='unemployed'), 
     'employmenttype' : fields.selection([ 
     ('0','Public'), 
     ('1','Private'), 
     ('2','Mission')],'Nature of employment', required="fieldproperty"), 
    } 

    @api.one 
    def fieldproperty(self): 
     if self.employmentstatus == 'employed': 
      return True 
     else: 
      return False 

答えて

1

は、ここに私のコードです。最善の策はクライアント側にすることです。 ir.model.fieldsモデルを見ると、必要なフィールドがdbに格納されており、計算されることはないことに気付くでしょう。

xmlには、attrs属性を使用します。ここに例があります。

<field name="field_name" attrs="{'required':[('other_field','=','other_value')]}"/> 

は、したがって、この例ではfield_nameというフィールドは、フィールドother_fieldother_valueの値を持っていますが、あなたのニーズに応じて、より複雑なまたはそれほど複雑であるドメイン基準を作成することができます場合にのみ必要です。

フィールドother_fieldは、評価がクライアント側で行われるため、これを機能させるために表示されます。評価のためにフィールドを含める必要があるが表示したくない場合は、フィールドを非表示にすることができます。このような。

<field name="other_field" invisible="1"/> 
関連する問題