@api.onchange和@api.depends在Odoo(openerp)中的主要区别是什么?
在OdooV8中,使用了许多API装饰器。 但是我不明白@api.depends和@api.onchange之间的主要区别 有人能帮我解决这个问题吗@api.onchange和@api.depends在Odoo(openerp)中的主要区别是什么?,openerp,odoo,openerp-8,Openerp,Odoo,Openerp 8,在OdooV8中,使用了许多API装饰器。 但是我不明白@api.depends和@api.onchange之间的主要区别 有人能帮我解决这个问题吗 谢谢。@api.dependence 此装饰器专门用于odoo中的“fields.function”。对于“field.function”,您可以计算值并将其存储在字段中,其中计算可能依赖于同一表格或其他表格的其他字段,在这种情况下,您可以使用“@api.depends”对某些表格的字段进行“监视” 因此,如果decorator中的任何字段被ORM
谢谢。@api.dependence 此装饰器专门用于odoo中的“fields.function”。对于“field.function”,您可以计算值并将其存储在字段中,其中计算可能依赖于同一表格或其他表格的其他字段,在这种情况下,您可以使用“@api.depends”对某些表格的字段进行“监视” 因此,如果decorator中的任何字段被ORM更改或以“的形式更改,这将触发对修饰函数的调用 假设有一个表“a”包含字段“x,y&z”,表“B”包含字段“p”,其中“p”是一个字段。函数取决于表“a”中的字段“x”,因此,如果字段“x”中有任何更改,它将触发用于计算表“B”中字段“p”的修饰函数。 确保表“A”和“B”以某种方式相关
@api.onchange 如果表单中更改了装饰器中指定的任何字段,则此装饰器将触发对装饰函数的调用此处范围仅限于同一屏幕/型号。 假设表单上有“DOB”和“Age”字段,因此我们可以为“DOB”设置@api.onchange decorator,只要您更改“DOB”的值,就可以计算“Age”字段 您可以在@api.depends和@api.onchange中输入相似之处,但一些区别在于onchange的范围仅限于同一屏幕/模型,而@api.depends也适用于其他相关屏幕/模型
有关更多信息,请参阅描述Odoo v8的所有API的链接。@API。onchange在虚拟记录中起作用。这些记录上的分配不会写入数据库,只是用于知道要发送回客户端的值 可以使用compute参数计算字段(而不是从数据库中读取),它必须将计算值分配给字段,它使用来自同一模型或其他模型的其他字段的值(与@api.onchange不同,后者仅适用于同一视图中的字段),它应该使用api.depends()指定字段 了解更多信息。请查看我们的博客: @api.com 如果在指定的字段中发生任何更改,将调用使用此装饰器定义的函数。此外,对字段的更改可以来自ORM或表单中的更改。此外,如果计算函数值依赖于另一个字段,则必须使用depends指定它 @api.onchange 当字段值更改时,将调用此装饰器的函数。此外,它只支持单个字段名;相反,将不考虑虚线名称,如父项\u id.field\u name。此外,在包含表单值的伪记录上调用onchange方法。以下是相同的示例: 参考以更好地理解示例: