tilesList中的RelationList错误字段值

时间:2014-12-03 17:47:49

标签: plone relation

我有一个关系字段的tile,如下所示:

from z3c.relationfield.schema import RelationChoice
from z3c.relationfield.schema import RelationList

related_resources = RelationList(
    title=_(u"Linked resources"),
    required=False,
    value_type=RelationChoice(
        title=u"Multiple",
        source=ObjPathSourceBinder(portal_type=('Folder', 'Collection'))
    )
)

问题在于,当我添加磁贴时,一切似乎都有效,并且我得到一个像

这样的值
'related_resources': [<Folder at /Plone/images>]

即使我希望在那里有一个RelationValue。

当我重新启动plone时,相同的磁贴会为该字段吐出该值:

'related_resources': [<Folder at images>]

一个带有破坏的采集链的对象,因此是一条破碎的路径。

对象是一样的(我可以通过目录和UID获取它的大脑),但它有点破碎。

重新启动后,编辑磁贴也无法正常工作:值从表单中消失,如果我更改了某些字段并且保存related_resources则丢失。

我是否需要为此类字段定制z3c.form数据管理器?如果是这样,我应该实施吗?

感谢您的任何指示。

1 个答案:

答案 0 :(得分:1)

首先,你不应该看到

'related_resources': [<Folder at /Plone/images>]

'related_resources': [<RelationValue...>]

RelationListDictDataManage最初在plone.app.relationfield中实现,仅用于支持切片。它确实有效,但似乎至少我们后来放弃了它们,转而使用UUID进行关系......

然而,显然某些事情已经破裂,而是使用了默认的属性字段数据管理器。您可以将调试器添加到z3c.form.form.applyChanges中以弄清楚,为什么它没有选择正确的数据管理器。