Openerp 将odoo中的两个值相加(求和)
假设我有两个字段。比如num1和num2。我想在树状视图中显示这些值的总和。如何在odoo中应用此功能?创建一个名为Openerp 将odoo中的两个值相加(求和),openerp,odoo,Openerp,Odoo,假设我有两个字段。比如num1和num2。我想在树状视图中显示这些值的总和。如何在odoo中应用此功能?创建一个名为result的第三个字段,该字段使用带有默认值的onchange或functional字段对num1和num2进行求和。您可以在窗体视图中隐藏它,并在树视图中显示它 由于每次加载视图时都会计算函数字段,因此如果要在树状视图中使用函数字段,请不要这样做,因为随着记录和计算变得复杂,函数字段会大大降低视图加载速度。您可以使用store=true强制将值也存储在数据库中 如果是用qweb
result
的第三个字段,该字段使用带有默认值的onchange或functional字段对num1
和num2
进行求和。您可以在窗体视图中隐藏它,并在树视图中显示它
由于每次加载视图时都会计算函数字段,因此如果要在树状视图中使用函数字段,请不要这样做,因为随着记录和计算变得复杂,函数字段会大大降低视图加载速度。您可以使用store=true
强制将值也存储在数据库中
如果是用qweb写的,上述案例将以不同的方式处理
更新:
欲了解更多关于
使用onchange的sum代码:
在python文件中:
class sample_test(osv.osv):
_name = "sample.test"
_columns = {
'num1': fields.integer('Num1'),
'num2': fields.integer('Num2'),
'result': fields.integer('Result'),
}
def onchange_result(self, cr, uid, ids, num1, num2, context=None):
res = {}
if num1 and numb2:
res['result'] = numb1 + numb2
return {'value': res}
在xml文件中:
<field name="num1" on_change="onchange_result(num1, num2)" />
<field name="num2" on_change="onchange_result(num1, num2)" />
<field name="result" />
有关功能字段,请参阅:
语法:
说明:
简单示例:您可以通过
onchange
方法实现这一点,下面是一个使用odoo的新api的onchange方法演示
class DemoModel(models.Model):
_name = 'demo.model'
field_x = fields.Integer('Column X')
field_y = fields.Integer('Column Y')
field_sum = fields.Integer('Column Sum')
@api.onchange('field_x', 'field_y')
def onchange_field(self):
if self.field_x or self.field_y:
self.field_sum = self.field_x + self.field_y
您不需要更改视图部件(xml)中的任何内容。您在条件中写入了错误的变量numb1 numb2 类计算(osv.osv): _name=“calc”
calc()store=True不存储该值。它重置为0.0,在您使用store=true的字段中,这是一个函数字段属性。对不起,兄弟。工作。谢谢如果我将readonly设置为true,则prblm。我希望它不可编辑您只需要在treeview中使用它,所以您不需要在表单视图中提供它。或者选择store=true的函数字段。尝试向上投票,如果对您有效,则接受答案,如果无效,则向下投票。bro,获取名称错误:未定义名称“api”
_columns = {
'num1': fields.integer('Num1'),
'num2': fields.integer('Num2'),
'result': fields.integer('Result'),
}
def onchange_result(self, cr, uid, ids, num1, num2, context=None):
res = {}
if num1 and num2:
res['result'] = num1 + num2
return {'value': res}