Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Openerp 将odoo中的两个值相加(求和)_Openerp_Odoo - Fatal编程技术网

Openerp 将odoo中的两个值相加(求和)

Openerp 将odoo中的两个值相加(求和),openerp,odoo,Openerp,Odoo,假设我有两个字段。比如num1和num2。我想在树状视图中显示这些值的总和。如何在odoo中应用此功能?创建一个名为result的第三个字段,该字段使用带有默认值的onchange或functional字段对num1和num2进行求和。您可以在窗体视图中隐藏它,并在树视图中显示它 由于每次加载视图时都会计算函数字段,因此如果要在树状视图中使用函数字段,请不要这样做,因为随着记录和计算变得复杂,函数字段会大大降低视图加载速度。您可以使用store=true强制将值也存储在数据库中 如果是用qweb

假设我有两个字段。比如num1和num2。我想在树状视图中显示这些值的总和。如何在odoo中应用此功能?

创建一个名为
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}