如何对字段进行约束

时间:2016-04-28 10:54:21

标签: python openerp odoo-8

我想对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'])]

1 个答案:

答案 0 :(得分:2)

store设置为True,以便将功能字段的值存储在数据库中,从而可以对其设置约束。

'jrestant': fields.function(compa_date, string='Jours restant', store=True)