如何更改字段集顺序?
我有一个从另一个表单模式继承的表单模式。两者都有fieldsets。但是,这些字段集按照它们创建的顺序放置。所以最后一个模式中描述的字段将是最后一个。我希望它是第一个。有没有办法做到这一点 ?如何更改字段集顺序?
例子:
from plone.supermodel import model
from zope import schema
class FormSchema(model.Schema):
model.fieldset(
'test',
label='Test',
fields=['field1']
)
field1 = schema.Text(title=u'test')
class FormSchema2(FormSchema):
# Is last but I would like to place it first
model.fieldset(
'test2',
label='Test2',
fields=['field2']
)
field2 = schema.Text(title=u'test2')
你不能,我很害怕。模式字段集合为总是以反向接口解析顺序合并;派生接口之前的基础。在FormSchema2
架构上再次声明字段集只会导致字段集被列出两次。
如果您的具有来控制字段集顺序,请不要从基本模式派生,而是重新声明它。
这个答案当然不是100%事实上是正确的。您可以通过手动操作其内部来解决zope界面中的垃圾问题。但你不想这么做:) –
@Mikko:你可以在基本模式上用'setTaggedValue()'方法设置标签值。或monkeypatch' plone.supermodel'或'plone.autoform'。但是这要么打破基本模式,要么需要对这两个框架有深入的了解,而且会非常脆弱。 –
我不确定它是否有效,但是您可以尝试在自己的类中声明每个字段集,然后按照正确的顺序在第三个字段集中混合它们。例如:'FormSchemaFinal(FormSchemaFieldset2,FormSchemaFieldset1):' – tcurvelo