我有一个由生成的附加配置页面/表单plone.app.registry.浏览器控制面板在
使用这些文档:
http://plone.org/documentation/kb/how-to-create-a-plone-control-panel-with-plone.app.registryhttps://pypi.python.org/pypi/plone.app.registry#control-panel-widget-settings
在这个表单中,我有一个整数字段:
from zope import schema
from plone.app.registry.browser import controlpanel
class MyAddonSettings(Interface):
partnerId = schema.Int(title=u"Partner Id",
description=u"enter your Partner ID",
required=True,
default=54321)
class SettingsEditForm(controlpanel.RegistryEditForm):
schema = MyAddonSettings
label = u"My settings"
description = u""""""
def updateFields(self):
super(SettingsEditForm, self).updateFields()
def updateWidgets(self):
super(SettingsEditForm, self).updateWidgets()
class SettingsControlPanel(controlpanel.ControlPanelFormWrapper):
form = SettingsEditForm
当表单呈现时,我得到的整数字段自动填充了“54321”,我不想要逗号。在
如何指定“不要那样做!”在
所以,我想我已经深入兔子洞了,但这是我想到的。在
1)的默认控件zope.schema.Int是TextWidget
2)z3c。form.converter.IntegerDataConverter适应zope.schema.interfaces.IInt和ITextWidget
3)IntegerDataConverter调用语言环境来为您“格式化整数”,为您提供了一个带有逗号的int的漂亮表示。在
我的选择是创建一个新的widget“IntWidget”和一个新的转换器“NoFormatIntegerDataConverter”,调整它们。然后手动将有问题的字段设置为我的新小部件:
我相信有一个不那么“兔子洞”的方法来做,但我发现自己在底部,所以我完成了旅程。我会让一个zope专家跟进“正确”的方法。在
=========================
基于TextWidget创建新的小部件
所以我们不会把我们的新转换器绑定到每个人的TextWidget上,破坏别人的东西
创建“dumb”转换器,并将其调整为新的widget“IntWidget”
^{pr2}$最后,更新fieldwidget工厂以使用我们的新widget
^{3}$相关问题 更多 >
编程相关推荐