簡體   English   中英

Plone:根據其他字段的值驗證字段

[英]Plone: Validate field based on other field's value

假設我們有一個敏捷性內容類型,其中包含兩個字段: field_afield_b

在編輯模式下:

  • 如果field_a選擇了category_1值,則field_b
  • 如果field_b選擇了其他值,則需要field_b

在這里似乎無法進行簡單的驗證。 我試過了:

from zope.interface import Invalid

def validate_field_b(value):
    # value is a string here. I can't create a condition based on field_a.
    raise Invalid(_(u"Value in field b is required."))

在這里使用:

field_b = schema.TextLine(
    title=_(u"Some field B"),
    required=False,
    constraint=validate_field_b
)

結果始終是field_b :)

有什么解決辦法嗎? 如何在驗證器中獲取表單/上下文/請求/其他字段的值?

解決方案是使用invariant而不是constrainthttps : //docs.plone.org/external/plone.app.dexterity/docs/advanced/validators.html#invariants

@invariant
def validate_field_b(data):
    if data.field_a != 'category_1' and data.field_b is None:
        raise Invalid(_("Missing input for field_b."))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM