覆盖dexterity类型中的标题值

1 python plone dexterity

我有一个灵巧的自定义类型(模式驱动)没有标题或描述字段.

class IAnimal(model.Schema):
    name = schema.TextLine(title=_(u"Name"),required=True,)
    specie = schema.Choice(title=_(u"Specie"),vocabulary=animalSpecies)
    weight = schema.TextLine(title=_(u"Weight"))
    (etc)
Run Code Online (Sandbox Code Playgroud)

我真的不需要我的模型上的标题字段,但是当我创建一些内容时,文件夹列表显示:

— by admin — last modified Oct 17, 2015 02:27 PM 
Run Code Online (Sandbox Code Playgroud)

我用mr.bob创建了这个产品,并没有覆盖任何形式.这可以通过覆盖任何形式,自定义行为(如plone.app.content.interfaces.INameFromTitle)或什么来实现?

我只想将"名称"字段作为"标题"而不更改"标题"的"名称",即使我必须隐藏模型中的"标题"字段.

看一些旧的原型产品,它是一种方法,如:

def at_post_create_script(self):
    title = self.name
    plone_utils = getToolByName(self, 'plone_utils', None)
    new_id = plone_utils.normalizeString(title)
    self.setTitle(new_id)
Run Code Online (Sandbox Code Playgroud)

keu*_*eul 5

我不明白为什么你不能简单地提供一个名为"Name"(最简单的方法)的"title"字段,但是你也可以覆盖基类的title属性和Title方法.

如果你使用mr.bob,你可能没有可以自定义的基类.检查您的类型定义XML:klass您可能拥有的属性plone.dexterity.content.Item.它更改为新的灵巧的基类必须添加到您的产品(例如:https://github.com/collective/wildcard.media/blob/84b82994dc424fe40b92b1c9af8d48edb558a78d/wildcard/media/content.py#L6)

当你有基类时,你可以添加Title方法和title属性,如:

class MyType(Item):
    implements(IMyType)

    def Title(self):
        return self.name

    @property
    def title(self)
        return self.name
Run Code Online (Sandbox Code Playgroud)