如何为OpenERP模型声明约束(_C)



我创建了一个新模型:

class rpe_mandate(orm.Model):
    _name = 'rpe.mandate'
    def _check_dates(self, cr, uid, ids, context=None):
        for rec in self.browse(cr, uid, ids):
            delivery_date = rec.delivery_date
            receipt_date = rec.receipt_date
            if delivery_date > receipt_date:
                return False
        return True
    _columns = {
        'delivery_date': fields.date('Delivery date'),
        'receipt_date': fields.date('Receipt date'),
    }
    _constraints = [
        (_check_dates, 'Error! Delivery date must be earlier than receipt date.', ['delivery_date', 'receipt_date',])
    ]

如果收货日期早于交货日期,我希望显示一条错误消息。

但使用我的代码,在这两种情况下,当我保存记录时,都不会发生任何事情(如果接收日期早于交付日期,反之亦然——我也尝试过检查我是否做错了——)

您为rpe_data生成了一个新记录,但通过了许多字段。所以,当你点击弹出窗口中的"保存"时,它并没有存储在数据库中。您必须单击按钮"保存",但在主窗体中,才能看到错误消息。

试试这个代码

def _check_dates(self, cr, uid, ids, context=None):
    for rec in self.browse(cr, uid, ids):
        delivery_date = rec.delivery_date
        receipt_date = rec.receipt_date
        if delivery_date > receipt_date:
            raise osv.except_osv(_("Alert !!"),_("Delivery date must be earlier than receipt date"))
    return True

不要忘记导入

从openerp.tools.translate导入_

最新更新