Plone 通过内容类型不变检查的灵活性行为访问字段

Plone 通过内容类型不变检查的灵活性行为访问字段,plone,behavior,dexterity,z3c.form,Plone,Behavior,Dexterity,Z3c.form,我的行为定义了两个字段:year和week(年度) 此行为可用于多种内容类型,仅在其中一种内容类型中,我需要确保此字段不会在同一内容类型的任何其他实例中重复,即此内容类型的两个对象不能共享相同的年和周(可以共享同一年或同一周) 由于此限制仅适用于此特定内容类型,我尝试使用zope.interface.invariant,但由于某些原因,我无法访问行为中定义的字段 内容类型的简化版本为: class IMyContentType(form.Schema) title = schema.Te

我的行为定义了两个字段:
year
week
(年度)

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

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

内容类型的简化版本为:

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\u year\u和\u week
variable中获取值(如果有)?

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

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

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

您可以改用小部件管理器验证程序:


或者在表单的操作处理程序中执行验证:

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

您可以改用小部件管理器验证程序:


或者在表单的操作处理程序中执行验证:

您能提供一个示例吗?我应该在哪里做这个改编?行为被添加到其fti(.xml文件)的内容类型中,这是一个问题吗?一个有趣的问题。不变量的“数据”变量没有任何可调整的内容。您能提供一个示例吗?我应该在哪里做这个改编?行为被添加到其fti(.xml文件)的内容类型中,这是一个问题吗?一个有趣的问题。不变量的“data”变量没有任何可调整的内容。