gpt4 book ai didi

python - OpenERP fields.reference 是什么意思?

转载 作者:数据小太阳 更新时间:2023-10-29 02:17:41 24 4
gpt4 key购买 nike

我在subscription.py 类中看到了这段代码。它为用户提供了 selection 和 many2one 字段。我在 openerp 文档和其他模块中也找到了,但我从未找到任何细节或其他示例

这是它的 View

fields.reference

这是与该字段相关的代码

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

这里是选择部分功能代码

def _get_document_types(self, cr, uid, context=None):
cr.execute('select m.model, s.name from subscription_document s, ir_model m WHERE s.model = m.id order by s.name')
return cr.fetchall()

我需要知道;我们可以制作我们自己的 fields.reference 类型的字段吗?

另一个组合而不是 MODEL,NAME..?

最佳答案

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

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

fields.reference constructor采用 3 个主要参数:

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

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

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

主要 API 调用

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

关于python - OpenERP fields.reference 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18094681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com