Мы довольно часто использовали проверку на уровне поля, и это замечательно и мощно. Однако бывают случаи, когда сам документ действителен только при оценке более чем одного поля. Изменение любого задействованного поля должно инициировать проверку.
Что мы сделали на данный момент, так это применили проверку к каждому вовлеченному полю, что запускает проверку несколько раз при POST.
Есть ли способ применить правило проверки к самому документу?
например скажем, у some_thing есть два поля, и при проверке учитываются оба поля. Если один из них изменится, мы должны свериться с другим.
Это работает...
Валидатор (упрощено для ясности):
def _validate_custom_validation(self, custom_validation, field, value):
if field == "field1":
f1 = value
f2 = self.document.get('field2')
if field == "field2":
f1 = self.document.get('field1')
f2 = value
if custom_validation and not is_validate(f1, f2):
self._error(field, "validation failed...")
затем определение схемы:
DOMAIN = {
some_thing: {
schema: {
field1: {
'type': 'string',
'custom_validation': True
},
field1: {
'type': 'string',
'custom_validation': True
}
}
}
}
Но мы хотели бы сделать что-то вроде этого:
Валидатор
def _validate_custom_validation(self, custom_validation):
f1 = self.document.get('field1')
f2 = self.document.get('field2')
if custom_validation and not is_validate(f1, f2):
self._error(resource, "validation failed...")
затем определение схемы:
DOMAIN = {
some_thing: {
'custom_validation': True,
schema: {
field1: {
'type': 'string'
},
field1: {
'type': 'string'
}
}
}
}
Это возможно?