问题描述
我使用 Java XML-RPC 客户端成功地从“ir.models”及其字段“ir.model.fields”中检索到模型为 documented。但是,模型字段的 store
字段让我感到困惑。它通常是 false
,例如对于模型 res.users
的字段,如 phone
、email
、zip
等,只有少数如 login
和 create_date
将其设置为 {{ 1}}。这是故意的吗?我的意思是 - 根据 documentation - true
标记计算字段,但在通过 API 创建 store=false
记录时我仍然可以设置 email
。
另外,我想知道为什么未设置的字段值通过 XML-RPC 表示为 res.users
。我无法将 false
的 boolean
ttyped 字段值与其未设置值区分开来?
解决方法
那是因为您有一个有趣的 res.users
继承情况。
通过在模型定义中使用 _inherits = {'res.partner': 'partner_id'}
表示法,此模型具有嵌入的合作伙伴。在数据库中,您将有两个表:res_users
和 res_partner
。它们之间的关系由表partner_id
中的外键res_users
建立。
但在 python 方面,这种继承将导致模型 res.users
也将包含 res.partner
模型的所有字段。 odoo 将模型 res.partner
记录的 res.users
字段标记为未存储,因为它们存储在另一个模型表中。
对于您的示例,login
和 create_date
是真正的 res.users
字段,因此它们存储在 res_users
表中。但是 phone
、email
和 zip
等等都是 res.partner
字段并存储在表 res_partner
中。