我尝试阅读文档,但这有点令人困惑。
另外,是否store
可以与其他任何字段类型一起使用?
首先要回答第二个问题:related
和sparse
字段都是它们的子类,function
因此store
可以/应该
与它们一起使用,但我没有尝试过。
store
参数背后的想法是告诉OpenERP是否可以记住并保存调用函数的结果,以避免再次调用它。
对于它的工作方式,让我们看下面的示例:
'order_status': fields.function(
_order_status,
type='char',
method=True,
store= . . . ,
string='Order Status',
),
默认情况下,store
是False
-这意味着功能领域进行评估每次请求的记录。
有,但是,其他两个可能的值-True
或dict
的tuple
秒。
store=True,
True
易于理解,仅表示该值将被计算一次,存储一次,然后在每次记录更改时重新计算。
store={
'model.table': (function, ['field1', 'field2', ...], priority),
'another_model.table': (some_func, [], priority),
},
该dict
的tuple
s的都有些复杂,以及非常强大的。有了它,我们可以告诉OpenERP我们 何时 要重新计算字段。
键是表,例如res.partner
或product.product
;三项元组中的第一项是要调用的函数,第二项是键表中要监视的字段的列表,最后一项是优先级或顺序,如果有多个函数,则在其中处理功能一1。
一个例子如下:
store={
'product.product': (_get_product_dependent_ids, ['name','price'], 20),
'res.partner': (_get_partner_dependent_ids, ['login'], 10),
},
向后工作,优先级(每个元组的最后一项)告诉我们,res.partner
元组将优先运行,因为它的优先级较低。
中间的项目是要监视的字段列表:对于res.partner
OpenERP,它将监视该login
字段,并且每当login
更改该字段时,OpenERP就会调用_get_partner_dependent_ids
;同样,只要更改记录的name
或price
字段product.product
,OpenERP就会调用_get_product_dependent_ids
2。
元组中的第一项是要调用的函数,这是棘手的部分。该函数的签名是:
def _get_ids(key_table, cr, uid, ids_of_changed_records, context=None):
注意key_table
不是self
!
即使此函数可能是您的依赖类中的方法(例如custom.table1
),第一个参数也不是该表,而是在存储字典中product.product
或res.partner
我们的示例3中列为键的表。
该功能应该做什么?它应该返回您的自定义表中需要重新计算该字段的所有记录ID的列表。
这是我的职能领域:
'order_status': fields.function(
_order_status,
type='char',
method=True,
store={
'fnx.pd.order': (_get_schedule_ids_for_order, ['state'], 20),
},
和我的商店功能:
def _get_schedule_ids_for_order(fnx_pd_order, cr, uid, ids, context=None):
if not isinstance(ids, (int, long)):
[ids] = ids
return [s.id for s in fnx_pd_order.browse(cr, uid, ids, context=context).schedule_ids]
什么字段定义告诉我们的是,任何时候state
场在创纪录的改变fnx.pd.order
,_get_schedule_ids_for_order
将与在记录的ID被称为fnx.pd.order
是有他们的state
场改变。
_get_schedule_ids_for_order
查找更改的记录,获取链接的计划记录的ID,然后将其返回。
脚注:
该priority
字段_get_ids()
对表中每个字段的每个函数进行排序,而不仅仅是_get_ids()
单个函数的排序。当一个功能字段依赖于另一个功能字段时,这非常有用。
如果字段列表为空,则对任何字段的任何修改都将导致调用该函数。
如果您需要访问函数中自己的表,则可以执行
self = key_table.pool.get('my_module_name_here.my_table_name_here')
本文向大家介绍如何禁用HTML输入字段的自动完成功能?,包括了如何禁用HTML输入字段的自动完成功能?的使用技巧和注意事项,需要的朋友参考一下 例 输出结果 上面的代码将产生以下输出- 提交表单一次后在上述字段中键入内容-
我在做Android项目?我有问题。我如何使用活动功能而不扩展它。因为我现在的java是碎片,所以我必须扩展碎片。请帮忙。我的代码:
问题内容: 我在Go中有一个函数,如下所示: 我想用参数(“ Bob”,“ New York”,“ Builder”,30、1000)调用此函数,但我想在调用函数时使用字段名称。但是,以下技术均无效(它们会引发“未解决的参考错误”): 应该如何正确完成?我在初始化结构时使用字段名称没有问题,但是对于函数来说,似乎缺少了一些东西。 问题答案: 该规范不允许你调用函数时指定参数名称。您只能列出希望作为
但这会产生以下错误: 更新 我试图创建一个类,实现,它基本上试图将对象表示为,其中对象可以是任何类型。当前正在使用和操作和方法中的字段,并使用上述方法创建和对象以调用getter和setter方法。我想知道是否可以将这两个单独的方法合并为一个。 可用作到的示例类: 下面是预期的用法:
默认情况下,MapStruct映射源和目标的所有属性,如果它们具有相同的名称。中的元素可用于省略任何字段映射。但那不是我想要的。我想控制映射策略。我想指定如下内容: 现在,这个映射仅仅意味着将id和名称从源映射到目的地。除非在mappings注释中指定,否则不应映射其他字段。
智能会议室目前具备发起视频会议、加入视频会议、无线投屏三个功能,这些功能需要搭配会议室内的iTV进行软硬联动使用。具体使用方法: 发起远程视频会议: 进入具备iTV的会议室->打开【智能会议室】->点击发起视频会议->选择参会成员->点击完成,此时iTV将呼出视频通话。 加入远程视频会议: 进入具备iTV的会议室->打开【智能会议室】->点击加入视频会议->输入会议ID ->点击完成,此时iTV将