gpt4 book ai didi

plone - 有没有办法做一个保留层次结构的portal_catalog?

转载 作者:行者123 更新时间:2023-12-01 09:39:17 29 4
gpt4 key购买 nike

假设:

Folder
- Document
- Document
- Folder1
- Document
- Document

如果我使用文件夹作为路径执行 Portal_catalog,我会得到:

[<Products.ZCatalog.Catalog.mybrains object at 0xdba8d9c>, 

<Products.ZCatalog.Catalog.mybrains object at 0xdd71234>,

<Products.ZCatalog.Catalog.mybrains object at 0xdd71324>,

<Products.ZCatalog.Catalog.mybrains object at 0xdd712fc>,

<Products.ZCatalog.Catalog.mybrains object at 0xdd71194>]

但我想要一个保留分层上下文的portal_catalog,例如:

{
"Folder":
[
<Products.ZCatalog.Catalog.mybrains object at 0xdba8d9c>,
<Products.ZCatalog.Catalog.mybrains object at 0xdba8d9c>,
{
"Folder1":[
<Products.ZCatalog.Catalog.mybrains object at 0xdba8d9c>, <Products.ZCatalog.Catalog.mybrains object at 0xdba8d9c>
]
}
]
}

所以,如果它是文件夹类型,它的 id 是字典中的键。

是否可能有一个类似的数据结构(保持对象的层次结构),或者我是否必须创建自己的递归函数(我知道上面的结构可能不存在,但我认为你可以得到这个想法)?由于性能问题,我正在考虑使用 portal_catalog 和 Brains。

谢谢!

最佳答案

我认为您可以对path索引进行sort_on。这意味着您的目录查询结果将按层次结构排序。然后你可以使用itertools.groupby以递归方式获取您描述的结构的迭代器。棘手的部分是递归。您将需要使用 groupby 的关键函数,为当前文件夹深度/递归级别选择 Brain.getPath() 的适当部分。

关于plone - 有没有办法做一个保留层次结构的portal_catalog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7114416/

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