Plone 基于灵巧度在字段集之间移动字段
在原型中,为了将字段从一个字段集(或模式)移动到另一个字段集,我们可以执行以下操作:Plone 基于灵巧度在字段集之间移动字段,plone,archetypes,dexterity,Plone,Archetypes,Dexterity,在原型中,为了将字段从一个字段集(或模式)移动到另一个字段集,我们可以执行以下操作: schema['creators'].schemata = 'default' 然而,我并没有用灵巧达到同样的效果。我试过使用表单提示。例: form.fieldset('default', fields=['creators'] ) 我注意到它不起作用,因为此时“创建者”字段是未知的。(尚未评估所有权行为) 然而,有了表单提示,我可以从“默认”转移到另一个(例如“所有权”) 我该怎么做?写我自己
schema['creators'].schemata = 'default'
然而,我并没有用灵巧达到同样的效果。我试过使用表单提示。例:
form.fieldset('default',
fields=['creators']
)
我注意到它不起作用,因为此时“创建者”字段是未知的。(尚未评估所有权行为)
然而,有了表单提示,我可以从“默认”转移到另一个(例如“所有权”)
我该怎么做?写我自己的行为
谢谢 您可能需要在控制下的接口上定义要分配的字段。虽然这似乎是重复的,但为了完整和明确起见,这是一个好主意。您可以: (1) 在内容类型界面上声明“创建者”字段(可能是建议的解决方案),或 (2) 使用此处记录的您自己的行为(并将此行为添加到portal_类型和相关设置XML中的类型FTI):
第一个解决方案应该是最简单的。您希望控制字段集位置或顺序的任何字段都应该由您的接口定义。也许您可以通过覆盖Form.updateWidgets()来操作Z3C Form.widgets实例?通过遵循(1),我必须在模式接口上执行类似于
creators=schema.Text()
,对吗?我这样做了,但是来自ioownership
的创建者
与我声明的没有重叠。你有一个例子吗?是的,在你的界面上创建一个“创建者”模式字段,并对IOOwnership界面进行子类化,而不是作为一种行为混入FTI。很可能该行为被编入编辑表单的plone.autoform组,而不考虑您的选择。如果您必须使用行为,请选择上面的路线2。
myfile = NamedFile(title=_(u"A file"))
form.fieldset('ownership', fields=['myfile'])