Plone Dexterity支持通过接口(使用zope.schema进行定义)或XML文件定义内容类型模式。首选/推荐的方式是什么?
此外:是否有用于定义模式(model/mytype.xml)的XML方言的文档?
此presentation看起来很接近,但并不完整。
发布于 2012-08-08 17:47:05
就我个人而言,我更喜欢zope.schema路线;如果我真的想要,我可以用python动态地改变接口属性,而XML定义当然是静态的。
此外,请注意,要针对XML定义的模式注册适配器和视图,无论如何都需要将其放入python代码中:
from plone.dexterity import api
class IMyXMLDefinedType(api.Schema):
api.model('my_xml_defined_type.xml')XML方言是plone.supermodel package的一部分;除了source code之外,我找不到任何文档。
发布于 2012-08-11 04:00:13
与xml模型相比,我更喜欢接口。部分原因是我更喜欢Python而不是XML。部分原因是您不能使用XML做某些事情。例如,如果您想使用collective.dexteritytextindexer将一个字段注册为可搜索的,您(目前)不能在Plone界面中设置它,因此您必须使用Python代码,因此必须使用一个界面。但是Martijn在他的回答中表明,您可以在接口中使用api.model来引用xml文件,所以如果您真的想这样做,也许这是一种解决方法。
发布于 2012-08-11 07:48:33
我要说的是,没有硬性而快速的答案,这会导致混乱。
对于更简单的内容类型,或者在开发更复杂的内容类型的早期阶段,我通常倾向于使用超模型XML,因为它与dexterity TTW编辑器的协作非常紧密。它允许我与客户一起工作,可以非常快速地反馈他们希望从其内容类型中获得什么。
有时,我甚至会转到一些功能的文件系统开发中,同时仍然在FTI via supermodel中定义字段。
然而,对于更复杂的内容类型,你几乎肯定会遇到一些仅通过超级模型无法完成的事情。在这一点上,我通常会转换成模式--这通常很容易做到。
理想情况下,如果您正在进行大量的灵活性开发,那么您应该能够非常容易地来回转换。它们只是表示相同对象和属性的不同方式。
https://stackoverflow.com/questions/11861182
复制相似问题