Skip to content

Commit 36ce932

Browse files
author
Jan Schrewe
committed
Properly call document validation excluding untouched fields
1 parent 39262c2 commit 36ce932

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

mongodbforms/documents.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -404,16 +404,21 @@ def _post_clean(self):
404404
err = {f.name: [e.message]}
405405
self._update_errors(err)
406406

407+
407408
# Call the model instance's clean method.
408-
if hasattr(self.instance, 'clean'):
409-
try:
410-
self.instance.clean()
411-
except ValidationError as e:
412-
if MONGO_NON_FIELD_ERRORS in e.errors:
413-
error = e.errors.get(MONGO_NON_FIELD_ERRORS)
414-
else:
415-
error = e.message
416-
self._update_errors({NON_FIELD_ERRORS: [error, ]})
409+
original_fields = self.instance._fields_ordered
410+
to_check = [f for f in original_fields if f not in exclude]
411+
self.instance._fields_ordered = to_check
412+
try:
413+
self.instance.validate()
414+
except ValidationError as e:
415+
if MONGO_NON_FIELD_ERRORS in e.errors:
416+
error = e.errors.get(MONGO_NON_FIELD_ERRORS)
417+
else:
418+
error = e.message
419+
self._update_errors({NON_FIELD_ERRORS: [error, ]})
420+
finally:
421+
self.instance._fields_ordered = original_fields
417422

418423
# Validate uniqueness if needed.
419424
if self._validate_unique:

0 commit comments

Comments
 (0)