【问题标题】:How to Add Array in Odoo 14 from XML file如何从 XML 文件在 Odoo 14 中添加数组
【发布时间】:2021-02-20 10:47:15
【问题描述】:

我想从 XML 文件中创建一个数组并将一个值放入其中,如下例所示,我想将 5 添加到数组中,使其变为 [1,2,3,5]。有人可以教我怎么做。我尝试使用下面的代码

<t t-set="numberArray" t-value="[1,2,3]" />
<t t-set="numberArray" t-value="numberArray.append(5)" />
<t t-esc="numberArray" />

但它不起作用并产生错误

TypeError: scope.numberArray.append is not a function

请帮帮我,谢谢

【问题讨论】:

    标签: arrays xml odoo


    【解决方案1】:

    Python list append 函数将值附加到现有列表中,但不会将新列表作为返回值返回。实际上它返回无。这样,在将数字 5 附加到列表时,您的代码会将变量 numberArray 设置为值 None。

    您可以通过使用 list + 运算符或通过将附加返回值分配给其他(虚拟)变量来添加数组。

    使用 + 运算符的工作解决方案:

    <t t-set="numberArray" t-value="[1,2,3]" />
    <t t-set="numberArray" t-value="numberArray+[5]" />
    <t t-esc="numberArray" />
    

    使用虚拟变量的工作解决方案:

    <t t-set="numberArray" t-value="[1,2,3]" />
    <t t-set="numberArrayDummy" t-value="numberArray.append(5)" />
    <t t-esc="numberArray" />
    

    更多关于 Python 列表方法的信息可以在这里找到:https://docs.python.org/3/tutorial/datastructures.html。它指出

    您可能已经注意到插入、删除或排序等方法 只修改列表没有打印返回值——它们返回 默认无。 [1] 这是所有可变数据的设计原则 Python 中的结构。

    【讨论】:

    • 嗨,我试过你的 +[5] 方法,但它变成了“[1,2,35]”,现在值类型变成了字符串,我什至不能用它来检查 if 5是否在数组中。还用 dummy 尝试了你的方法,但它仍然显示错误 scope.numberArray.append is not a function。你还有其他方法吗?
    • 你在哪里以及如何使用这个 xml "t" 元素?您在哪里看到错误? Odoo 在 QWeb 模板中支持 t 元素,并且这两个示例都有效。模板代码在您的环境中是否可以在没有附加部分的情况下工作(代码中只有第 1 行和第 3 行)?
    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 2021-02-07
    • 2021-08-24
    • 1970-01-01
    • 2021-03-06
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多