首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dexterity -初始化模式值

Dexterity -初始化模式值
EN

Stack Overflow用户
提问于 2014-05-22 23:08:45
回答 3查看 246关注 0票数 2

在以编程方式创建灵活的内容时,我遇到了这个问题,比如使用invokeFactory,而不是通过表单。基本上,模式中每个字段的默认值都将是None,而不是空字符串、空列表等。如果我想遍历schema.List字段中的所有值,我必须首先检查它是否是一个列表,否则就会有出错的风险,这取决于内容是如何创建的。

我想知道我是否遗漏了一些方法来处理所有字段以设置初始值(如果它们尚未定义)。也许invokeFactory不是首选的方法?为创建的Dexterity内容设置初始值的事件侦听器是不是不好的做法?

EN

回答 3

Stack Overflow用户

发布于 2014-05-23 00:55:04

您缺少的是每个基于灵活性的内容类型在其模式字段的定义上都具有的default属性。

请参阅Dexterity开发人员手册中的Field properties

票数 2
EN

Stack Overflow用户

发布于 2014-05-23 00:24:43

尝试使用createObject或createContent,然后将对象添加到容器中。

这些都在Dexterity手册的参考部分中的Manipulating content objects中进行了记录。它包含所有的导入和示例代码。

票数 1
EN

Stack Overflow用户

发布于 2016-11-18 01:34:52

经验告诉我总是初始化defaultmissing_value可选参数的模式,例如:

代码语言:javascript
复制
name = schema.TextLine(
    title=u'Name',
    default=u'',
    missing_value=u'',
)
colors = schema.List(
    title=_('Colors'),
    value_type=schema.TextLine(),
    default=[],
    missing_value=[],
)

原因是当您以编程方式创建对象(例如,使用plone.api.content.create)并且不初始化相关属性时,需要default,而当您不向z3c.form传递任何值时,则需要missing_value

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23810665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档