2016-04-28 6 views
1

jrestantには、2つの日付の間の日数も返されますが、正の数でなければならないという制約を実行したいと考えています。
フィールドに制約を設ける方法は?フィールド上の制約を作る方法

def compa_date(self,cr,uid,ids,args,fields,context=None): 
     res = {} 
     for self_brow in self.browse(cr,uid,ids,context): 

      if self_brow.Date_ouv_pli or self_brow.date_depot: 
       date_debut = datetime.strptime(self_brow.Date_ouv_pli,'%Y-%m-%d') 
       date_fin = datetime.strptime(self_brow.date_depot,'%Y-%m-%d') 
       res[self_brow.id] = (date_debut - date_fin).days      
     return res 

    _columns = { 
     'date_depot' : fields.date('Date dépot de soumission'), 
     'Date_ouv_pli' : fields.date('Date Ouverture Plis'), 
     'jrestant': fields.function(compa_date,string='Jours restant') 
    } 

    def _check(self, cr, uid, ids, context=None): 
     for product in self.read(cr, uid, ids, ['jrestant'], context=context): 
      if jrestant < '0' : 
       return False 
     return True 
    _constraints = [(_check, 'Days must be positive', ['jrestant'])] 
+0

ここに「jrestant」は機能/計算フィールドです。 'jrestant':fields.function(compa_date、string = 'Jours restant') これで制約は適用できません。 – prakash

答えて

2

設定storeTrueに非常に機能的なフィールドの値は、あなたがそれに制約を設定することを可能にするデータベースに格納されます。

'jrestant': fields.function(compa_date, string='Jours restant', store=True) 
関連する問題