2016-04-28 76 views
1

我想對jrestant執行約束,該約束返回兩個日期之間的天數,該天數也必須是正數。
如何對字段進行約束?如何對字段進行約束

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)