1

我有一个定义两个字段的行为:yearweek(年度)。

此行为可用于多种内容类型,并且仅在其中一种中我需要确保此字段不会在相同内容类型的任何其他实例中重复,即此内容类型的两个对象不能共享相同year week(可以在同一年同一周分享)。

由于此限制仅适用于我尝试使用的特定内容类型,zope.interface.invariant但由于某种原因,我无法访问行为中定义的字段。

Content 类型的简化版本是:

class IMyContentType(form.Schema)
    title = schema.TextLine(title="My title",
                            description="My description",
                            required=True,
    )

    @invariant
    def check_year_and_week(data):
        data.week

如何从不check_year_and_week变量中获取值(如果有)?

4

2 回答 2

4

你不能。不变量可以访问同一接口中其他字段的值,但不能访问其他接口中的字段。

您可以改用小部件管理器验证器:http: //developer.plone.org/reference_manuals/active/schema-driven-forms/customising-form-b ​​ehaviour/validation.html#widget-manager-validators

或者在表单的操作处理程序中进行验证:http: //developer.plone.org/reference_manuals/active/schema-driven-forms/customising-form-b​​ehaviour /validation.html#validating-in-action-handlers

于 2013-11-14T18:37:15.480 回答
0

行为只不过是一个适配器;如果您没有获得不变量上的字段,您可能需要在尝试访问额外字段之前调整您的内容类型。

于 2013-11-14T11:50:16.863 回答