在odoo中的日期字段中添加年份

时间:2019-06-06 11:48:15

标签: python odoo

我想在现有的field.date(date_entree)中添加三年,然后在Odoo的date_fin_prev字段中获取结果。

第一种方法是:

from odoo import fields,api,models
from datetime import datetime

class Ca_administrateur (models.Model):
_name= "ca_administrateur"
date_entree= fields.Date(string="Date d'entrée")
date_fin_prev= fields.Date(compute="_compute_date_fin_prev", store=False)
@api.multi
@api.depends('date_entree')
def _compute_date_fin_prev(self):
    for record in self:
    record.date_fin_prev = record.date_entree + datetime.timedelta(years=3)

错误生成为“ AttributeError: 'ca_administrateur' object has no attribute '_compute_date_fin_prev'

当我尝试第二种方法

date_fin_prev= fields.Date()
@api.multi
@api.onchange('date_entree')
def on_change_state(self):
    for record in self:
    record.date_fin_prev = record.date_entree + datetime.timedelta(years=3)

但是,当我单击界面上的“保存”时,在表date_fin_prev中没有作用

1 个答案:

答案 0 :(得分:1)

编辑:根据您要实现的目标,我将展示两种不同的方法。

第一种方法:计算字段。 date_fin_prev是计算出来的,用户无法修改

date_fin_prev= fields.Date(compute="_compute_date_fin_prev", store=False)
@api.multi
@api.depends('date_entree')
def _compute_date_fin_prev(self):
    for record in self:
        record.date_fin_prev = record.date_entree + datetime.timedelta(years=3)  # Actually not checked

第二种方法:一种“ onchange”方法,每当用户更改第一个字段的值时,接口就会调用该方法

date_fin_prev= fields.Date() # not computed
@api.multi
@api.onchange('date_entree')
def on_change_state(self):
    for record in self:
        record.date_fin_prev = record.date_entree + datetime.timedelta(years=3)  # Actually not checked