gpt4 book ai didi

python - 如何在 Dexterity 中传递数据网格字段中选择字段的列表值?

转载 作者:太空宇宙 更新时间:2023-11-03 19:12:45 24 4
gpt4 key购买 nike

我的 Dexterity 内容类型中有 datagridfield,使用 Collective.z3cform。我有一个接口(interface)类,它将我的内容类型中主数据网格字段的 value_type 定义为 DictRow。

class IAssessment(interface):
assessment_item=schema.Choice(
title=u"Assessment Item",
values=[u"Item 1",u"Item 2"],
required=False
)
reference=schema.TextLine(title=u"Reference",required=False)


class Application(form.Schema,IImageScaleTraversable):
form.widget(app_assessment=DataGridFieldFactory)
app_assessment=schema.List(
title=u"Application Assessment",
value_type=DictRow(title=u"Application Assessment",schema=IAssessment)
)

是否可以根据使用来自其他内容类型的portal_catalog 的目录查询,在assessment_item 字段下为IAssessment 提供值。当我插入 Catalog=getToolByName(context, 'portal_catalog') 时出现错误,因为上下文未定义,即使我在 IAssessment 中放置参数上下文,仍然遇到相同的错误。有没有一种方法可以在接口(interface)类中进行目录查询,如果没有,还有其他方法吗?

最佳答案

您很可能需要一个上下文源绑定(bind)器,其形式为 dynamic vocabulary .

from zope.schema.interfaces import IContextSourceBinder
from zope.schema.vocabulary import SimpleVocabulary
from Products.CMFCore.utils import getToolByName

@grok.provider(IContextSourceBinder)
def assessmentItems(context):
catalog = getToolByName(context, 'portal_catalog')
return SimpleVocabulary.fromItems(
(result.getId(), result.getObject()) for result in catalog(...)
)

在字段定义中,将其作为词汇表传入:

assessment_item=schema.Choice(
title=u"Assessment Item",
vocabulary=assessmentItems,
required=False
)

关于python - 如何在 Dexterity 中传递数据网格字段中选择字段的列表值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12399914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com