【发布时间】:2016-02-09 13:20:24
【问题描述】:
Odoo 8 中是否有任何方法可以创建仅在满足某些条件时才计算的字段,否则用户将能够设置其值?
示例
我有一个名为 box 的模型,它有一个名为 value 的浮点字段。
想象一个盒子里面可以有几个盒子,每个盒子都有自己的价值。
所以我们有一个名为child_ids 的one2many 字段指向box,还有一个名为parent_id 的many2one 也指向box。
现在我想要以下行为:用户可以设置一个没有任何盒子的盒子的 value 字段(这意味着,childs_ids 是 False),但是,如果盒子里面至少有一个盒子(这意味着,childs_ids 不是 False),必须计算 value 字段,它将是其子 value 的总和。
有人知道如何实现这种行为吗?
我输入了我的代码,但它不起作用(value 的值总是被重置为 0):
class box(models.Model):
_name='box'
@api.one
@api.depends('child_ids', 'child_ids.value')
def _compute_value(self):
if self.child_ids:
self.value = sum(
[child.value for child in self.child_ids])
def _set_value(self):
pass
parent_id = fields.Many2one(comodel_name='box',
string='Parent Box')
child_ids = fields.One2many(comodel_name='box',
inverse_name='parent_id',
string='Boxes inside')
value = fields.Float(
string='Value',
compute='_compute_value',
inverse='_set_value',
store=False,
required=True,
readonly=True,
states={'draft':[('readonly',False)]},
)
【问题讨论】:
标签: python-2.7 openerp odoo-8