Openerp 从odoo中的其他模型调用方法和字段
这是我的第一个模型、方法和字段Openerp 从odoo中的其他模型调用方法和字段,openerp,odoo-8,Openerp,Odoo 8,这是我的第一个模型、方法和字段 class overtime(models.Model): _name = 'overtime' def calc_overtime(self, start_date, end_date): #import pdb;pdb.set_trace() f = '%Y-%m-%d %H:%M:%S' d1 = datetime.strptime(start_date, f) d2 = datetime.str
class overtime(models.Model):
_name = 'overtime'
def calc_overtime(self, start_date, end_date):
#import pdb;pdb.set_trace()
f = '%Y-%m-%d %H:%M:%S'
d1 = datetime.strptime(start_date, f)
d2 = datetime.strptime(end_date, f)
timeDiff = d2-d1
hours = float(timeDiff.total_seconds()/3600)
return hours
start_date = fields.Datetime('Start Date', required=True, default=lambda *a : time.strftime("%Y-%m-%d"+" "+"%H:%M:%S")
, readonly=True, states={'draft': [('readonly', False)]})
end_date = fields.Datetime('End Date', required=True, default=lambda *a : time.strftime("%Y-%m-%d"+" "+"%H:%M%S")
, readonly=True, states={'draft': [('readonly', False)]})
这是我的第二个模型、方法和领域
class overtime_details(models.Model):
_name='overtime_details'
def function(self):
"calling calc_overtime"
ovrtm = fields.Float('Overtime Hour(s)')
如何使用“self.pool.get”在加班详细信息类中调用calc_加班方法,将开始日期和结束日期作为参数
或“self.env”。并将结果作为ovrtm字段的值。谢谢你,我想你不需要在第一节课上计算小时数,函数应该在第二节课上,并添加一个One2many字段 课余时间(models.Model): _名称=‘加班’
start_date = fields.Datetime('Start Date', required=True, default=lambda *a : time.strftime("%Y-%m-%d"+" "+"%H:%M:%S")
, readonly=True, states={'draft': [('readonly', False)]})
end_date = fields.Datetime('End Date', required=True, default=lambda *a : time.strftime("%Y-%m-%d"+" "+"%H:%M%S")
, readonly=True, states={'draft': [('readonly', False)]})
class overtime_details(models.Model):
_name='overtime_details'
def compute_houres(self, start_date, end_date):
d1 = self.overtime_id.end_date
d2 = self.overtime_id.start_date
f = '%Y-%m-%d %H:%M:%S'
d1 = datetime.strptime(start_date, f)
d2 = datetime.strptime(end_date, f)
timeDiff = d2-d1
hours = float(timeDiff.total_seconds()/3600)
self.ovrtm = hours
overtime_id = fields.Many2one('overtime', 'Réference', ondelete='cascade'),
ovrtm = fields.Float(compute='compute_houres')
谢谢,你的回答解决了我的问题。但是如果我仍然想从第一个类调用func,您能给出解决方案吗?参见