Plone 动态词汇的无趣方式?
我有一个python脚本,它返回一个基于上下文的、动态生成的简单列表:Plone 动态词汇的无趣方式?,plone,grok,Plone,Grok,我有一个python脚本,它返回一个基于上下文的、动态生成的简单列表: def myVocabMethod(self): mylist = ['a','list','apart'] # do sth dynamic return mylist 我想将结果传递到选择字段,其中词汇表属性看起来是s.th。像这样: atapi.StringField('theField' vocabulary=.myPythonScript.myVocabMethod(),
def myVocabMethod(self):
mylist = ['a','list','apart']
# do sth dynamic
return mylist
我想将结果传递到选择字段,其中词汇表属性看起来是s.th。像这样:
atapi.StringField('theField'
vocabulary=.myPythonScript.myVocabMethod(),
(...)
),
如何将脚本结果和vocab值粘合在一起
我找到的文档总是需要Grok。此外,它只是一个简单的列表,不需要i18n或其他更复杂的功能。注册命名词汇表的简单方法:
基本上,您可以将其指向一个返回SimpleCabulary实例的函数。我在帖子中找到了我要查找的内容: 并在此处的官方文件中引用: 对于可能感兴趣的任何人,以下是代码:
from Acquisition import aq_parent
from Products.Archetypes import atapi
from Products.Archetypes.public import DisplayList
YourArchetypeSchema = schemata.ATContentTypeSchema.copy() + atapi.Schema((
atapi.StringField(
'somefieldname',
vocabulary = yourVocabulary,
),
))
class YourArchetype(base.ATCTContent):
def yourVocabulary(self):
dl = DisplayList()
# We can do something context-based here,
# f.e. get all Events in parent-folder:
eventlist = aq_parent(self).contentValues(filter={'portal_type' : 'Event'})
for event in eventlist:
dl.add(event['id'], event['title'])
return dl
atapi.registerType(YourArchetype, PROJECTNAME)
你能说得更具体些吗?什么样的动态词汇,什么样的领域,等等?展示代码。@LennartRegebro:我还没有写任何具体的代码来把它粘在一起,因为我还没有找到一个无趣的方法的例子。用我提到的文档更新了quest。没有,但是合理地说,你有一些具体的代码,你想在其中使用词汇表、模式、表单、内容类型或其他什么。这是原型吗?灵巧普隆福根?也不当你没有grok时,你问的是你如何做
@grok.provider()
?这似乎是唯一的grok部分。@Lennartreegebro:好的,谢谢,到目前为止,我带着一个代码示例回来,只是想,也许我错过了fitting docs,因为我们不应该再使用grok了,或者我弄错了?在这件事上的观点不同。我当然没有看到任何共识。正确的答案:)我只是想说,如果有一个“更快”的方法(见我自己的答案)。这里灵巧和原型的主要区别是使用Choice(source=命名为vocab),分别通过getUtilities获取vocab,对吗?