如何更改字段集顺序?

Gag*_*aro 6 plone dexterity z3c.form

我有一个表单模式,它继承自另一个表单模式.两者都有字段集.但是,字段集按其创建顺序放置.因此,最后一个模式中描述的字段集将是最后一个.我希望它成为第一个.有没有办法做到这一点 ?

例:

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')
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 3

恐怕你不能。模式字段集始终以相反的接口解析顺序合并;派生接口之前的基础。在架构上再次声明字段集FormSchema2只会导致字段集被列出两次。

如果您必须控制字段集顺序,请不要从基本架构派生,而是重新声明它。

  • @Mikko:您可以使用基本模式上的“setTaggedValue()”方法设置标记值。或者 Monkeypatch `plone.supermodel` 或 `plone.autoform`。但这要么会破坏基本模式,要么需要对两个框架有深入的了解,并且非常脆弱。 (2认同)