Plone 基于灵巧度检索内容对象IntID的标准方法

Plone 基于灵巧度检索内容对象IntID的标准方法,plone,dexterity,Plone,Dexterity,five.intid文档说明了以下检索intid的模式: 对象: from five.intid import site intids = site.get_intids(app.plone) intid_obj = intids.getId(app.plone.restrictedTraverse('path/to/object') 这是Plone中的经典方法还是有一些辅助/实用方法 是否可以包装上述代码?我始终使用: from zope.component import getUtilit

five.intid文档说明了以下检索intid的模式: 对象:

from five.intid import site
intids = site.get_intids(app.plone)
intid_obj = intids.getId(app.plone.restrictedTraverse('path/to/object')
这是Plone中的经典方法还是有一些辅助/实用方法 是否可以包装上述代码?

我始终使用:

from zope.component import getUtility
from zope.intid.interfaces import IIntIds

intid = getUtility(IIntIds).getId(object)

由于intid实用程序已在本地组件管理器中注册。

请注意:您确定要使用intid吗?上次我问了类似的问题,我得到的答案是IntID不完全受支持,你应该避免使用它们…@Mikkoohtama:更重要的是,IntID在过去给我们带来了一些问题,特别是在与关系结合使用时。从那时起,我已经消除了一些皱纹。使用IntID的替代方案是什么?用例是什么?IntID最初是为Zope 3设计的,在Zope 3中,可以直接检索对象,而不会破坏采集链;在Z2中,它也需要存储路径,以便能够重建上下文,因此您可以自己使用路径,而不是intid。