Odoo - 如何在验证前比较存储的日期
Odoo - How to compare stored dates before validation
我正在 Odoo 上开发会议室预订模块
我正在尝试将我关于插入的日期与我在数据库中的日期进行比较。
我尝试了 search()、browse() 函数,我也尝试在记录集上迭代,但它总是指向我将要插入的记录。
我正在考虑通过 SQL 查询来确定它,但我找不到存储数据的 table 的名称。
这里是 class 定义:
class Reservation(models.Model):
_name = 'module001.reservation'
name = fields.Char(String="Reservation Number", required=True)
start_date = fields.Datetime(default=fields.Date.today)
room_number = fields.Many2one('module001.room', ondelete='cascade', string="Room", required=True)
reserved_for = fields.Many2one('res.partner', string="Reserved for ")
end_date = fields.Datetime(string="End Date", store=True)
提前致谢
我能够以这种方式完成它,所以我可以将我已有的记录的每个日期与我将要插入的当前记录进行比较
@api.multi
@api.constrains('start_date', 'end_date', 'name')
def _check_date(self):
envir = self.env['tt.reservation'].search([('id', '!=', self.id)])
for record in envir:
start_self = datetime.datetime.strptime(self.start_date, "%Y-%m-%d %H:%M:%S")
end_self = datetime.datetime.strptime(self.end_date, "%Y-%m-%d %H:%M:%S")
start_rec = datetime.datetime.strptime(record.start_date, "%Y-%m-%d %H:%M:%S")
end_rec = datetime.datetime.strptime(record.end_date, "%Y-%m-%d %H:%M:%S")
#verification de la diponibilite de la salle
if self.room_id == record.room_id:
if start_self.date() == start_rec.date() and start_self.date() == end_rec.date():
if ((start_self.time() > start_rec.time() and start_self.time() < end_rec.time()) or (end_self.time() > start_rec.time() and end_self.time() < end_rec.time()) or (start_self.time() <= start_rec.time() and end_self.time() >= end_rec.time())):
raise exceptions.ValidationError("Salle occupée")
我正在 Odoo 上开发会议室预订模块 我正在尝试将我关于插入的日期与我在数据库中的日期进行比较。 我尝试了 search()、browse() 函数,我也尝试在记录集上迭代,但它总是指向我将要插入的记录。 我正在考虑通过 SQL 查询来确定它,但我找不到存储数据的 table 的名称。
这里是 class 定义:
class Reservation(models.Model):
_name = 'module001.reservation'
name = fields.Char(String="Reservation Number", required=True)
start_date = fields.Datetime(default=fields.Date.today)
room_number = fields.Many2one('module001.room', ondelete='cascade', string="Room", required=True)
reserved_for = fields.Many2one('res.partner', string="Reserved for ")
end_date = fields.Datetime(string="End Date", store=True)
提前致谢
我能够以这种方式完成它,所以我可以将我已有的记录的每个日期与我将要插入的当前记录进行比较
@api.multi
@api.constrains('start_date', 'end_date', 'name')
def _check_date(self):
envir = self.env['tt.reservation'].search([('id', '!=', self.id)])
for record in envir:
start_self = datetime.datetime.strptime(self.start_date, "%Y-%m-%d %H:%M:%S")
end_self = datetime.datetime.strptime(self.end_date, "%Y-%m-%d %H:%M:%S")
start_rec = datetime.datetime.strptime(record.start_date, "%Y-%m-%d %H:%M:%S")
end_rec = datetime.datetime.strptime(record.end_date, "%Y-%m-%d %H:%M:%S")
#verification de la diponibilite de la salle
if self.room_id == record.room_id:
if start_self.date() == start_rec.date() and start_self.date() == end_rec.date():
if ((start_self.time() > start_rec.time() and start_self.time() < end_rec.time()) or (end_self.time() > start_rec.time() and end_self.time() < end_rec.time()) or (start_self.time() <= start_rec.time() and end_self.time() >= end_rec.time())):
raise exceptions.ValidationError("Salle occupée")