在我们选择的当前日期添加30天,并在新字段中显示

时间:2016-04-19 11:45:04

标签: python openerp

我正在 OpenERP v.7 sale.order的日期字段中添加30天 Actualy我做到了,但问题是我希望在我在其他日期字段中选择的日期添加30天,而不仅仅是在今天的日期添加30天。

日期字段为date_order。当我选择日期时,我希望在所选日期添加30天。在代码中,我在今天的日期添加了30天,但我希望它在我选择的日期自动更改30天后。

class Sale_Order(osv.Model):
    _inherit = 'sale.order'

_columns = {
    'duedate': fields.date('Duedate', readonly=True),

}
_defaults = {
    'duedate': (date.today() + timedelta(days=30)).strftime(DEFAULT_SERVER_DATE_FORMAT),
}

enter image description here

有人可以帮助我吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

声音就像你需要覆盖创建/写入方法来改变“duedate”,如果更改了日期字段。 但您也可以将duedate描述为功能字段(存储在表中或不存在)。

检索日期的方法:

def _get_due_date(self, cr, uid, ids, name, args, context=None):
    ... 

字段说明:

'duedate': fields.function(_get_due_date, type='datetime', string="Due date"),

答案 1 :(得分:0)

要实现,您需要将 duedate 字段设为计算类型

示例:

from datetime import date
from dateutil.relativedelta import relativedelta

将duedate定义为计算字段

duedate = fields.Date(string='Duedate', compute='_compute_duedate')

定义计算功能

@api.multi
def _compute_duedate(self):
   for rec in self:
       rec.duedate = date.today() + relativedelta(months=+1)

希望这对你有所帮助。