假设我有两个字段。例如num1和num2。我想在树视图中显示这些值的总和。如何在odoo中应用这个?
答案 0 :(得分:3)
创建一个名为result
的第三个字段,该字段使用带有默认值的onchange或功能字段对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" />
对于功能领域,请参阅:
语法:https://doc.odoo.com/v6.0/developer/2_5_Objects_Fields_Methods/field_type.html#functional-fields
说明:http://bazaar.launchpad.net/~openerp/openobject-server/7.0/view/head:/openerp/osv/fields.py#L843
答案 1 :(得分:2)
您可以通过onchange
方法实现此目的,这是使用新的odi of odoo 的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)中的任何内容。
答案 2 :(得分:0)
你在条件
中写错了变量numb1 numb2class calc(osv.osv): _name =“calc”
_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}
计算值()