如何根據另一個字段的存在條件驗證字段。例如,只有在「國家」是「美國」時才需要「國家」。formencode有條件驗證
感謝, 史蒂夫
編輯:
所以我想這樣做:
chained_validators = [validators.RequireIfPresent('state', present="country")]
但錯誤信息與代替 「國家」 「_the_form」 相關聯。有沒有辦法將它鏈接到該字段?
如何根據另一個字段的存在條件驗證字段。例如,只有在「國家」是「美國」時才需要「國家」。formencode有條件驗證
感謝, 史蒂夫
編輯:
所以我想這樣做:
chained_validators = [validators.RequireIfPresent('state', present="country")]
但錯誤信息與代替 「國家」 「_the_form」 相關聯。有沒有辦法將它鏈接到該字段?
在我公司的一個項目中發生同樣的問題。我們爲此編寫了我們自己的Formencode驗證器。我們目前試圖將它與主項目合併。在此期間,你可以在這裏下載:https://github.com/GevatterGaul/formencode
還存在,還有一份HOWTO,德國:http://techblog.auf-nach-mallorca.info/2014/08/19/dynamische_formulare_validieren_mit_formencode/
讓我告訴你在你的榜樣的背景下,快速綱要:
from formencode import validators
v = validators.RequireIfMatching('country', expected_value='US', required_fields=['state'])
v.to_python(dict(country='US', state='Virginia'))
主要好處是,與validators.RequireIfPresent
相比,validators.RequireIfMatching
僅在給定字段與給定值相匹配時才需要字段。在你的例子中,只有'國家'是'美國',那麼它需要'國家'字段。
希望我能幫上忙。
那裏有更好的驗證庫。即時通訊使用這個工作原因,但有一個像'not_empty'這樣的選項已經是我書中紅旗的開始。 – dtc 2017-10-05 18:27:16
我們可以得到一個代碼示例,所以我們有更多的上下文嗎? – MikeVaughan 2011-05-03 22:38:04
我只使用默認驗證器,在我的情況下「NotEmpty」。所以在我的例子中,我有兩個表單域,State和Country,當Country是US時,我只希望State不爲空。否則,國家可能是空的。 – steve 2011-05-04 19:28:19