从odoo中的只读字段保存值
我在表单上有3个字段,字段总和为只读。单击“保存来自只读字段的数据”后,该字段不存储在数据库中 例如:从odoo中的只读字段保存值,odoo,odoo-10,odoo-9,odoo-11,Odoo,Odoo 10,Odoo 9,Odoo 11,我在表单上有3个字段,字段总和为只读。单击“保存来自只读字段的数据”后,该字段不存储在数据库中 例如: class myClass(models.Model): number_1 = fields.Integer(store=True,default=0) number_2 = fields.Integer(store=True,default=0) sum = fields.Integer(store=True) @api.onchange('number_1','number_2') d
class myClass(models.Model):
number_1 = fields.Integer(store=True,default=0)
number_2 = fields.Integer(store=True,default=0)
sum = fields.Integer(store=True)
@api.onchange('number_1','number_2')
def compute_sum(self):
total = self.number_1 + self.number_2
self.sum = total
在这种情况下,我更喜欢计算字段。公式更改不会保存只读字段(例如更改事件)。在Odoo 11中,为视图中的这种行为引入了一个新选项
force_save
,但是以前的版本没有这个选项(除了社区模块,例如)
计算字段的解决方案:
class myClass(models.Model):
number_1=fields.Integer()
number_2=字段。整数()
sum=fields.Integer(compute=“compute\u sum”,store=True)
@依赖于('number_1'、'number_2')
@api.multi
def计算和(自身):
请自行记录:
总计=record.number\u 1+record.number\u 2
record.sum=总计
不需要更改视图定义。在正常的Integer
字段中也不需要store
参数。默认值0
已经是Integer
上的默认值,因此需要定义它
您不必在
sum
的视图中明确定义readonly
,因为没有反向方法的计算字段在默认情况下是只读的。我希望下面的代码可以帮助您
在我的情况下,“have Total year”字段是只读的,根据“出生日期”,将更新总年份
使用onchange方法,可以在字段上获取总年份,但在保存该记录时,总年份字段设置为空
解决方案:-
创建总年份的新虚拟字段,并在原始字段上设置该虚拟字段值
例如:-
Python文件
年份合计=字段。浮点()
总计\年度\副本=字段。浮点()
起始日期时间导入日期
变更法
@api.onchange('dob')
def onchange_dob(自):
今天=日期。今天()
self.total\u year=self.total\u year\u copy=today.year-dob.year-((today.month,today.day)<(dob.month,dob.day))
创建方法
@api.model
def创建(自身、VAL):
如果VAL中的“总年份副本”:
更新({'total\u year':vals.get('total\u year\u copy'))
返回超级(项目,自我)。创建(VAL)
写入方法
@api.multi
def写入(自身、VAL):
如果VAL中的“总年份副本”:
更新({'total\u year':vals.get('total\u year\u copy'))
返回超级(项目,自我).write(VAL)
Xml文件
field name=“total\u year”readonly=“1”
字段名称=“总计\年度\副本”不可见=“1”
希望这能帮助您保存只读记录
致以最良好的祝愿
安基特·甘地(Ankit H Gandhi)请花点时间通读这本书。堆栈溢出上的格式设置与其他站点不同。