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

Dav*_*ain 4 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.

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

Dav*_*ick 6

您可以基于模型创建架构:

from plone.supermodel import model

class IMySchema(model.Schema):
    model.load('path/to/model.xml')
Run Code Online (Sandbox Code Playgroud)

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

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