1

我有一个容器 x,其中一个链接项目 y 设置为显示。如果我知道 x,我如何以编程方式访问 y?

我试过: getattr(x, 'default_page', None),但它总是返回 None 。

4

2 回答 2

1

通过使用getattr,您可以覆盖有关如何确定对象(项目或容器)的默认页面的 plone 默认行为。

Plone 中的内容对象继承BrowserDefaultMixin它提供了获取对象默认页面的功能

mixin,分别是 mixin 使用的实用程序,提供了所需的方法,称为getDefaultPage

>>> x = b.getObject()
>>> x.getDefaultPage()
...

这将返回正确的content objectview取决于对象、FTI 和视图本身等的配置。

查看get_default_page更多详细信息。

甚至更好......这种获取默认页面的规范方式也有助于快速找到您的问题,因为该方法会进行某些检查以确保传递的对象提供正确的“功能”。字符串不会通过这些检查。

于 2021-10-19T13:18:51.477 回答
0

default_page = getattr(x, 'default_page', None)是答案。但是要确保你有一个 x 的对象。

我的错误是我b.getObject().absolute_url()在查询中尝试了而不是b.getObject().

于 2021-10-13T08:29:58.320 回答