我想在现有的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
中没有作用
答案 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