如何只接受odoo形式的未来日期

时间:2016-05-24 21:46:15

标签: openerp

这是我尝试过的代码:

@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()

我收到错误消息(“不可靠的insinrer unedatepassée”),但是字段date_pub没有更新,用户选择的相同日期被插入数据库!

帮助!!

2 个答案:

答案 0 :(得分:1)

要限制在数据库旁边插入错误值,您应该使用 @ 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.'))

答案 1 :(得分:0)

以下代码可以帮助您仅允许将来和当前(今天)的日期

@ 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")