对 start_date 和截止日期设置约束
setting up constraint on start_date and deadline
我在项目模块中添加了两个字段,start_date 和 stop_date。我尝试添加一个代码来控制输入,并且仅在 stop_date 大于 start_date 时才保存记录。所以我将这段代码添加到项目 class:
date_start = fields.Date(string='Start Date')
date_stop = fields.Date(string= 'Deadline')
@api.onchange('date_stop')
def _onchange_date_stop(self):
if self.date_start != False and self.date_stop != False:
if (self.date_stop<=self.date_start):
raise ValidationError("deadline date Should be greater than start date!")
_constraints = [
(_onchange_date_stop, 'deadline date 2 Should be greater than start date!', []),
]
现在,当截止日期早于开始日期时,会引发验证错误:
deadline date Should be greater than start date!
当我尝试保存记录时出现此错误:
deadline date 2 Should be greater than start date!
Error details:
deadline date Should be greater than start date!
None
但是当截止日期大于开始日期时,我得到这个错误:
deadline date 2 Should be greater than start date!
所以我总是有一个问题,无论截止日期是否大于开始日期。
有人可以帮忙吗?
谢谢。
你可以使用约束装饰器
@api.constrains('date_start', 'date_stop')
def check_date_fields(self):
if self.date_start and self.date_stop:
if self.date_stop <= self.date_start:
raise ValidationError("deadline date Should be greater than start date!")
此代码也对我有用:
date_start = fields.Date(string='Start Date')
date_stop = fields.Date(string= 'Deadline')
@api.one
@api.constrains('date_start', 'date_stop')
def _check_deadline(self):
if self.date_stop <= self.date_start:
raise ValidationError("deadline must be greater than start date")
除了 onchange 之外,我们还可以使用约束...它有助于在创建和编辑以及更改时验证某些内容。这是我的代码,它工作正常
date_start = fields.Date(string='Start Date')
date_stop = fields.Date(string= 'Deadline')
@api.multi
@api.constrains('date_start', 'date_stop')
def _check_date(self):
date_start = self.date_start
date_stop = self.date_stop
if (date_start and date_stop) and (date_start > date_stop):
raise ValidationError(_('The start date must be less than to the end date. ')
我在项目模块中添加了两个字段,start_date 和 stop_date。我尝试添加一个代码来控制输入,并且仅在 stop_date 大于 start_date 时才保存记录。所以我将这段代码添加到项目 class:
date_start = fields.Date(string='Start Date')
date_stop = fields.Date(string= 'Deadline')
@api.onchange('date_stop')
def _onchange_date_stop(self):
if self.date_start != False and self.date_stop != False:
if (self.date_stop<=self.date_start):
raise ValidationError("deadline date Should be greater than start date!")
_constraints = [
(_onchange_date_stop, 'deadline date 2 Should be greater than start date!', []),
]
现在,当截止日期早于开始日期时,会引发验证错误:
deadline date Should be greater than start date!
当我尝试保存记录时出现此错误:
deadline date 2 Should be greater than start date!
Error details:
deadline date Should be greater than start date!
None
但是当截止日期大于开始日期时,我得到这个错误:
deadline date 2 Should be greater than start date!
所以我总是有一个问题,无论截止日期是否大于开始日期。
有人可以帮忙吗? 谢谢。
你可以使用约束装饰器
@api.constrains('date_start', 'date_stop')
def check_date_fields(self):
if self.date_start and self.date_stop:
if self.date_stop <= self.date_start:
raise ValidationError("deadline date Should be greater than start date!")
此代码也对我有用:
date_start = fields.Date(string='Start Date')
date_stop = fields.Date(string= 'Deadline')
@api.one
@api.constrains('date_start', 'date_stop')
def _check_deadline(self):
if self.date_stop <= self.date_start:
raise ValidationError("deadline must be greater than start date")
除了 onchange 之外,我们还可以使用约束...它有助于在创建和编辑以及更改时验证某些内容。这是我的代码,它工作正常
date_start = fields.Date(string='Start Date')
date_stop = fields.Date(string= 'Deadline')
@api.multi
@api.constrains('date_start', 'date_stop')
def _check_date(self):
date_start = self.date_start
date_stop = self.date_stop
if (date_start and date_stop) and (date_start > date_stop):
raise ValidationError(_('The start date must be less than to the end date. ')