From 5e95a0e2ae2d24cd2b7cf0ae7a84edbb85524a38 Mon Sep 17 00:00:00 2001 From: Viicos <65306057+Viicos@users.noreply.github.com> Date: Thu, 2 Oct 2025 21:22:26 +0200 Subject: [PATCH] Only create class instance after validation in `ModelValidator.validate_construct()` --- src/validators/model.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/validators/model.rs b/src/validators/model.rs index 3385f68b6..5f7a5970d 100644 --- a/src/validators/model.rs +++ b/src/validators/model.rs @@ -300,11 +300,12 @@ impl ModelValidator { } } - let instance = create_class(self.class.bind(py))?; + let instance; if self.root_model { let state = &mut state.rebind_extra(|extra| extra.field_name = Some(PyString::new(py, ROOT_FIELD))); let output = self.validator.validate(py, input, state)?; + instance = create_class(self.class.bind(py))?; let fields_set = if input.as_python().is_some_and(|py_input| py_input.is(&self.undefined)) { PySet::empty(py)? @@ -315,6 +316,7 @@ impl ModelValidator { force_setattr(py, &instance, intern!(py, ROOT_FIELD), output)?; } else { let output = self.validator.validate(py, input, state)?; + instance = create_class(self.class.bind(py))?; let (model_dict, model_extra, val_fields_set): (Bound, Bound, Bound) = output.extract(py)?;