2017-02-26 36 views
1

我有一個類:日期除了在odoo 10.0

class DateAddition(models.Model): 
     _name = "studentmanagement.dateaddition" 

     input_date = fields.Date() 
     output_date = fields.Date() 
     no_months = fields.Integer() 

然後,如果我填input_date = 「2017年2月26日」 和no_months = 2,output_date將是 「2017年4月26日」。我如何在on_change的odoo-10.0中執行此操作?

回答

1

我不知道如何將這種掛鉤到您的odooon_change,但這裏是一個程序來從你的日期字符串加或減三個月:

代碼:

import datetime as dt 

def add_month(date, months): 
    assert isinstance(date, dt.date) 
    year, month, day = date.year, date.month, date.day 
    year += int((month + months-1)/12) 
    month = (month + months - 1) % 12 + 1 
    return dt.date(year, month, day) 

def add_month_from_string(date_string, months): 
    date = dt.datetime.strptime(date_string, '%d %b %Y') 
    return add_month(date, months).strftime('%d %b %Y') 

測試數據:

test_data = (
    ("26 Feb 2017", 2, "26 Apr 2017"), 
    ("6 Dec 2016", 3, "6 Mar 2017"), 
    ("26 Feb 2017", -2, "26 Dec 2016"), 
) 

for have, inc, want in test_data: 
    print(have, inc, add_month_from_string(have, inc), want) 

結果:

('26 Feb 2017', 2, '26 Apr 2017', '26 Apr 2017') 
('6 Dec 2016', 3, '06 Mar 2017', '6 Mar 2017') 
('26 Feb 2017', -2, '26 Dec 2016', '26 Dec 2016')