Plone目录搜索 - 如何通过检查列表字段中的数字来查询对象?

时间:2014-10-02 16:40:05

标签: plone

我有一个名为Supplier的敏捷内容类型,它有一个名为supplierType的字段,在接口中定义为schema.List。该列表可以包含值1,2或3,它们对应于类型名称。供应商可以是多种类型(即supplierType = [2,3])

使用目录,我想查询供应商类型列表字段包含我正在寻找的这些数字中的一个或多个的供应商。

因此,我正在尝试寻找供应商类型包含2或3的供应商。

不幸的是,我被困在查询的工作方式上。我试过这样做:

supplierTypes = [1,2]
catalog = getToolByName(getSite(),"portal_catalog")

results = catalog(portal_type='gpcl.supplier.supplier',
                  supplierType={"query":supplierTypes,"operator":"or"})

编辑: 通过打印结果测试是否有效,我没有让任何供应商回来,但它没有崩溃。

根据我要查找的一个或多个数字的标准,在供应商类型列表中查询供应商对象的正确方法是什么?

另外,从技术上讲,我可以获取大脑列表然后创建一个列表,追加其supplierType字段包含我正在寻找的一个或多个数字的对象,但我觉得查询会更有效。

1 个答案:

答案 0 :(得分:2)

首先:您是否在Plone portal_catalog工具中创建了一个新索引?

如果不是:您的索引类型必须是KeywordIndex类型(只需将其命名为supplierType)。之后你只需要像这样查询::

catalog(portal_type='gpcl.supplier.supplier', supplierType=[1, 3])

请参阅:http://docs.plone.org/develop/plone/searching_and_indexing/query.html

另外:您确定您的门户网站类型名称是“gpcl.supplier.supplier”吗?尝试手动浏览目录以确保(从ZMI目录工具中的“目录”选项卡)。