使用来自另一个模块的 eval 访问 odoo 字段
Accessing odoo fields using eval from another module
有人可以帮助我理解这一行的目的吗?
我可以看到它指的是帐户中的一个字段,然后是模型 account_move,然后是字段 amount_total.
我正在尝试将此模块从 v12 移植到 v13,但出现 amount_total 不存在的错误。
字段 amount_total 存在于该模型中
<field name="ks_record_field" eval="ref('account.field_account_move__amount_total')" />
我移植的模块中原来的字段是这样的
<field name="ks_record_field" eval="ref('account.field_account_invoice__amount_total')" />
根据数据文件字段documentation :
If a ref
attribute is provided, its value must be a valid external id, which will be looked up and set as the field’s value.
Mostly for Many2one and Reference fields.
The eval
attributes simply evaluates whatever Python expression it is provided and sets the result as the field’s value.
The evaluation context contains various modules (time
, datetime
, timedelta
, relativedelta
), a function to resolve external identifiers (ref
) and the model object for the current field if applicable (obj
).
当数据文件被执行时,Odoo 将尝试计算由 eval
属性指定的表达式并调用 xmlid_lookup
,这将 return (id
, res_model
, res_id
) 或如果找不到则提高 ValueError
。
Total
字段外部标识符不存在于数据库中(未创建或删除)或已被修改。
除了@Kenly 的回答,odoo 中模型和字段的信息都存储在数据库中,当 odoo 保存它们时,它们有一个特殊的 XML-ID 结构,您可以使用它来快速检索它们。
model: prefix model_
与模型名称连接,用下划线替换点
my.model.name ---------> model_my_model_name
您可以查看ir.model.access.csv
我们一直在使用它。
字段:前缀 field_
与 name of the model + underscore + name of the field
连接
my_field_name -----> field_my_model_name_my_field_name
当然,当您引用在另一个应用程序中创建的模型时,您需要像 account.field_account_invoice__amount_total
一样提供完整的 XML-id,因为 account.invoice
是在 account
模块在旧版本的 Odoo 中,你会收到此错误,因为在 V13 模型中 account.invoice
被合并到 account.move
ref
将在数据库中查找字段,但它不会找到因为已经没有这样的模型了
希望对你也有帮助。
有人可以帮助我理解这一行的目的吗? 我可以看到它指的是帐户中的一个字段,然后是模型 account_move,然后是字段 amount_total.
我正在尝试将此模块从 v12 移植到 v13,但出现 amount_total 不存在的错误。 字段 amount_total 存在于该模型中
<field name="ks_record_field" eval="ref('account.field_account_move__amount_total')" />
我移植的模块中原来的字段是这样的
<field name="ks_record_field" eval="ref('account.field_account_invoice__amount_total')" />
根据数据文件字段documentation :
If a
ref
attribute is provided, its value must be a valid external id, which will be looked up and set as the field’s value.
Mostly for Many2one and Reference fields.
The
eval
attributes simply evaluates whatever Python expression it is provided and sets the result as the field’s value.
The evaluation context contains various modules (time
,datetime
,timedelta
,relativedelta
), a function to resolve external identifiers (ref
) and the model object for the current field if applicable (obj
).
当数据文件被执行时,Odoo 将尝试计算由 eval
属性指定的表达式并调用 xmlid_lookup
,这将 return (id
, res_model
, res_id
) 或如果找不到则提高 ValueError
。
Total
字段外部标识符不存在于数据库中(未创建或删除)或已被修改。
除了@Kenly 的回答,odoo 中模型和字段的信息都存储在数据库中,当 odoo 保存它们时,它们有一个特殊的 XML-ID 结构,您可以使用它来快速检索它们。
model: prefix
model_
与模型名称连接,用下划线替换点my.model.name ---------> model_my_model_name
您可以查看ir.model.access.csv
我们一直在使用它。
字段:前缀
连接field_
与name of the model + underscore + name of the field
my_field_name -----> field_my_model_name_my_field_name
当然,当您引用在另一个应用程序中创建的模型时,您需要像 account.field_account_invoice__amount_total
一样提供完整的 XML-id,因为 account.invoice
是在 account
模块在旧版本的 Odoo 中,你会收到此错误,因为在 V13 模型中 account.invoice
被合并到 account.move
ref
将在数据库中查找字段,但它不会找到因为已经没有这样的模型了
希望对你也有帮助。