OpenERP是什么意思fields.reference?

2024-10-01 13:28:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在订阅.py上课。它为用户提供了selection和many21字段。我在openerpdocumentation和其他模块中也找到了,但我从未找到任何细节或其他示例

这是它的观点

fields.reference

这是与该字段相关的代码

'doc_source': fields.reference('Source Document', required=True, selection=_get_document_types, size=128),

这是选择部件功能代码

^{pr2}$

我需要知道,我们能自己做吗字段.引用键入字段。?在

另一个组合,而不是型号,名称。。?在


Tags: 模块代码用户py示例sourcefieldsdoc
1条回答
网友
1楼 · 发布于 2024-10-01 13:28:02

在OpenERP框架中,fields.reference字段是一个伪-many2one关系,可以针对多个模型。也就是说,除了外键之外,它还包含目标模型的名称,因此每个值都可以属于不同的表。用户界面首先显示一个下拉列表,用户可以在其中选择目标文档模型,然后是一个many2one小部件,用户可以从该模型中选择特定的文档。 当然,您可以在自己的模块中使用它,但它总是以这种方式运行。在

这通常用于附加各种文档(类似于附件,只是目标是另一个记录而不是文件)。它还用于一些需要附加到不同类型记录的内部OpenERP模型中,例如可能属于任何记录的属性(fields.property值)。在

fields.referenceconstructor有3个主要参数:

'doc': fields.reference('Field Label', selection, size)

其中selection包含可从中选择值的文档模型列表(例如合作伙伴、产品等),其格式与^{}声明中的格式相同。选择值的键必须是模型名(例如'res.partner')。在

从openerp7.0开始,size参数应该是None,除非您想特别限制存储值的数据库字段的大小,这可能是个坏主意。技术上,fields.reference值以model.name,id的形式存储为文本。您不能在常规的SQL联接中使用这些字段,因此在许多情况下它们的行为不像many2one字段。在

主API调用

  • 当您以编程方式read()一个非空的引用值时,您必须将其拆分到','上,以标识目标模型和目标ID
  • 当您以编程方式write()一个非空的引用值时,您需要传递'model.name,id'字符串。在
  • 当您search()寻找非空的引用值时,您需要搜索'model.name,id'字符串(例如在搜索域中)
  • 最后,当您以编程方式通过一个引用值时,框架将自动取消对它的引用,并遵循与常规many2one字段的关系-这是规则的主要例外;-)

相关问题 更多 >