2016-02-13 50 views
0

我正在Odoo上的会议室预定模块上工作 我想比较一下插入日期和数据库中的日期。 我试过搜索(),browse()函数,我也尝试遍历记录集,但它总是指向我即将插入的记录。 我正在考虑通过SQL查询doint,但我无法找到存储数据的表的名称。Odoo - 如何在验证前比较存储日期

下面是类的定义:

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) 

预先感谢您

+0

是否要比较您的案例中的start_date和end_date字段? –

回答

0

我能完成它这样,所以我可以比较的,我已经与当前的记录每一个日期记录我即将插入

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