我创建了一个新模型:
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导入_