2013-03-25 42 views
0

這是第一代碼
類timetable_timetable(osv.osv):
          _name = 'timetable.timetable'
          _columns = {
                    '名稱':fields.char( '姓名',大小= 「64」,需要= TRUE),
                    '當然':fields.many2one( 'college.course', '課程'),
                    '學期':fields.many2one( 'course.semester', '學期'),
                    '主體':fields.one2many( 'timetable.subjects', 'timetable_id', '主題')
}
timetable_timetable()
函數從STARTDATE&持續時間得到結束日期中的OpenERP

這是第二個碼
類timetable_subjects(osv.osv):
      _name = 'timetable.subjects'
      _columns = {
                    'timetable_id':fields.many2one( 'timetable.timetable', '時間表'),
                   「subject_id ':fields.many2one('semester.subject','Subject'),
                    '開始日期':fields.datetime( '開始日期',存儲= TRUE),
                    '持續時間':fields.float( '時長',大小= 64,需要= TRUE),
                    'END_DATE':字段。日期時間( '終止日期',店內= TRUE),
                    '教授':fields.many2one( 'professor.professor', '教授')
                   }
timetable_subjects()

我想做一個函數on_change它從start_date &持續時間返回我end_date。那麼我怎麼能做到這個功能。

回答

0

寫這樣的代碼在你的onchange方法END_DATE

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')}} 

如果你的時間是在幾個月或幾年而言,寫小時多年來relativedelta(months=duration)幾個月,relativedelta(years=duration)和同樣的方式或分鐘或秒

0

DEF on_change(個體,CR,UID,IDS,t_date,持續時間):

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} 
相關問題