NamedImageFieldWidget不呈现图像



我有一个z3c表单,像这样,这不是一个灵巧的内容类型:

from zope import schema
from plone.directives import form
from bsw.adel import personne
from plone.namedfile.field import NamedImage
from plone import namedfile
from plone.formwidget.namedfile import NamedImageFieldWidget
def get_portrait():
    login = api.user.get_current().id
    adel_personne = personne.Personne()
    ma_personne = adel_personne.get(id_personne=None,
                                    login=login)
    if ma_personne is not None:
        data = adel_personne.get_picture(id_personne=ma_personne.idPersonne,
                                         photo_filename=None,
                                     mode='v'
                                     )
        return namedfile.NamedImage(data=base64.b64decode(data), filename=u'portrait.jpg')
class ISouscripteur(form.Schema):
    """
    Souscripteur Schema
    """
    form.widget(portrait=NamedImageFieldWidget)
    portrait = NamedImage(
        title=_(u"Portrait"),
        required=False,
        defaultFactory=get_portrait
    )

我可以上传一个图像,这是可行的。但当我加载表单并获取肖像时,我只看到一个空的输入文件。数据来自外部web服务。

我已经测试了写一个updateWidgets方法来用NamedImage更新小部件值(根据文档),但结果是相同的。

使用调试器,我发现小部件值中仍然有一个NamedImage, updateWidgets方法只是替换它。

在这个小部件中显示图像和单选按钮是否有我错过的东西?

您需要的是一个计算字段,根据plone.directives.form文档,z3c。表单有一个值适配器的概念,一个可以为属性提供值的组件。

下面是一个使用first设置一个默认值的标题字段的例子;试着为你的用例修改它

from plone.directives import form
from zope import schema
class IMySchema(form.Schema):
    title = schema.TextLine(title=u"Title")
@form.default_value(field=IMySchema['title'])
def default_title(data):
    return data.context.suggested_title

最新更新