如何只接受 odoo 表单中的未来日期

how to accept only a future date in a form odoo

这是我试过的代码:

@api.onchange('date_pub')
def get_right_date(self):
    if self.date_pub:
        if datetime.strptime(self.date_pub, DEFAULT_SERVER_DATE_FORMAT).date() < datetime.now().date():
            raise Warning(_( "impossible d'insérer une date passée"))
            self.date_pub=datetime.now().date()

我收到错误消息 ("impossible d'insérer une date passée"),但是字段 date_pub 没有更新,用户选择的相同日期被插入到数据库中!

求助!!

为了限制在数据库中插入错误值你应该使用@api.constrains 喜欢:

@api.one
@api.constrains('date_pub')
def _check_date_pubd(self):
    if self.date_pub:
        if datetime.strptime(self.date_pub, DEFAULT_SERVER_DATE_FORMAT).date() < datetime.now().date():
            raise ValidationError(_('impossible d'insérer une date passée.'))

下面的代码有助于仅允许未来和当前(今天)的日期

@api.onchange('start_dt')

def check_date(self):

    selected_date = datetime.strptime(self.start_dt, "%Y-%m-%d").date()
    today = datetime.now().date()
    todaydate = datetime.strptime(str(today), "%Y-%m-%d").date()
    if selected_date < todaydate:
        raise Warning("CURRENT OR FUTURE DATE IS ONLY ACCEPTABLE")