@@ -749,6 +749,14 @@ def validate_model(forms, model, create_preview_model=True, is_admin=False):
749749
750750 all_errors = defaultdict (list )
751751 rollback_session = None
752+ extra_validators = {}
753+
754+ for form in forms .values ():
755+ extra_validators [form ] = defaultdict (list )
756+ for key , field in form .field_list :
757+ extra_validators [form ][key ].extend (form .field_validation .get_validations_by_field (key ))
758+ if field and (model .is_new or getattr (model , key , None ) != field .data ):
759+ extra_validators [form ][key ].extend (form .new_or_changed .get_validations_by_field (key ))
752760
753761 if create_preview_model :
754762 preview_model = model
@@ -763,13 +771,7 @@ def validate_model(forms, model, create_preview_model=True, is_admin=False):
763771 form .is_admin = is_admin
764772 form .model = preview_model
765773
766- extra_validators = defaultdict (list )
767-
768- for key , field in form .field_list :
769- extra_validators [key ].extend (form .field_validation .get_validations_by_field (key ))
770- if field and (model .is_new or getattr (model , key , None ) != field .data ):
771- extra_validators [key ].extend (form .new_or_changed .get_validations_by_field (key ))
772- valid = form .validate (extra_validators = extra_validators )
774+ valid = form .validate (extra_validators = extra_validators [form ])
773775 if not valid :
774776 for key , val in form .errors .items ():
775777 all_errors [form ._prefix + key ].extend (map (str , val ))
0 commit comments