使用Dexterity时,我可以将模型驱动类型与模式驱动类型结合起来吗?

时间:2013-07-09 15:42:19

标签: schema plone dexterity

如何创建混合类型(即保持模型驱动类型的便利性但是根据需要利用模式驱动类型的类型)?

我最近的探索使我将模型驱动的灵巧类型作为灵活性开发的最便捷方法。我一直在关注这篇文章:http://developer.plone.org/reference_manuals/external/plone.app.dexterity/model-driven-types.html与此处记录的架构驱动类型相反:http://developer.plone.org/reference_manuals/external/plone.app.dexterity/schema-driven-types.html

混合方法源于我使用引用的问题,到目前为止,使用模型驱动类型无法预测。我希望模式驱动的定义会在这种情况下给我更精细的控制。

1 个答案:

答案 0 :(得分:6)

您可以根据模型创建架构:

from plone.supermodel import model

class IMySchema(model.Schema):
    model.load('path/to/model.xml')

Python模式中定义的任何字段都将优先于模型中定义的具有相同名称的字段。

在ZCML配置阶段结束时加载模型。这意味着有一个警告:  您无法在模块范围内的任何位置引用模型中的字段。例如,使用@ form.default_value(IMySchema ['foo'])装饰器注册默认值将不起作用,因为装饰器在导入时执行时尚未加载该字段。