函数从startdate获取enddate&;openerp中的持续时间

函数从startdate获取enddate&;openerp中的持续时间,openerp,Openerp,这是第一个代码 课程时间表\课程时间表(osv.osv): _name='timeline.timeline' _列={ “名称”:fields.char('name',size=“64”,required=True), “课程”:fields.manyOne('college.course','course'), “学期”:fields.manyOne(“课程.学期”,“学期”), “主题”:字段.one2many('timeline.subjects'、'timeline\u id'、'su

这是第一个代码
课程时间表\课程时间表(osv.osv):
_name='timeline.timeline'
_列={
“名称”:fields.char('name',size=“64”,required=True),
“课程”:fields.manyOne('college.course','course'),
“学期”:fields.manyOne(“课程.学期”,“学期”),
“主题”:字段.one2many('timeline.subjects'、'timeline\u id'、'subject')
}
时间表\u时间表()

这是第二个代码
课程表\u科目(osv.osv):
_名称='时间表.科目'
_列={
“时间表id”:字段.manyOne(“时间表.时间表”,“时间表”),
“主题id”:字段.many21(“学期.主题”,“主题”),
“开始日期”:字段.datetime('start date',store=True),
“持续时间”:fields.float('duration',size=64,required=True),
“结束日期”:字段.datetime(“结束日期”,store=True),
“教授”:fields.manyOne('professor.professor','professor')
}
课程表(科目)(


我想做一个关于变更的函数,它从开始日期和持续时间返回结束日期。那么我该如何实现该功能。

onchange
方法中为结束日期编写此代码

from datetime import datetime
from dateutil.relativedelta import relativedelta

def my_onchange(self, cr, uid, ids, s_date, duration):
    return {'value': {'end_date': (datetime.strptime(s_date,'%Y-%m-%d %H:%M:%S') + relativedelta(days=duration)).strftime('%Y-%m-%d %H:%M:%S')}}
如果您的持续时间是以月或年为单位的,则在更改(self、cr、uid、id、t\u日期、持续时间)时写入
relativedelta(months=duration)
,在年中写入
relativedelta(years=duration)

    res = {'end_date': False}
    if t_date:
        now = datetime.strptime(t_date, '%Y-%m-%d %H:%M:%S')

        e_date = now + timedelta(hours=duration)
        print e_date
        f_date = datetime.strftime(e_date, '%Y-%m-%d %H:%M:%S')
        res['end_date'] = f_date
    return {'value': res}