0

これが最初のコード
クラス timetable_timetable(osv.osv):
      _name='timetable.timetable'
      _columns={
           'name': fields.char('Name',size="64",required=True),
           'course': fields.many2one('college.course','Course'),
           'semester': fields.many2one('course.semester','Semester'),
           'subject': fields.one2many('timetable.subjects','timetable_id ','件名')
}
timetable_timetable()

これは 2 番目のコード
クラス timetable_subjects(osv.osv):
    _name = 'timetable.subjects'
    _columns ={
           'timetable_id' : fields.many2one('timetable.timetable','Time Table'),
           'subject_id': fields.many2one ('semester.subject','Subject'),
           'start_date': fields.datetime('Start Date',store=True),
           'duration' : fields.float('Duration',size=64,required=True) ,
           'end_date' : fields.datetime('終了日',store=True),
           'professor' : fields.many2one('professor.professor','Professor')
           }
timetable_subjects()

start_date と期間から end_date を返す関数 on_change を作成したいと考えています。では、どうすればその機能を作ることができますか。

4

2 に答える 2

0

end_dateonchangeメソッドにこのコードを記述します。

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)

于 2013-03-25T10:22:04.593 に答える
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}
于 2013-03-25T10:33:31.633 に答える