@@ -1037,7 +1037,8 @@ def _check_declared_fields_exist_in_model(cls) -> None:
10371037 def process_kwargs (cls , ** kwargs : Any ) -> dict [str , Any ]:
10381038 """Process the given kwargs and generate values for the factory's model.
10391039
1040- If you need to deeply customize field values, you'll want to override this method.
1040+ If you need to deeply customize field values, you'll want to override this method. This is where values are
1041+ generated and assigned for the fields on the model.
10411042
10421043 :param kwargs: Any build kwargs.
10431044
@@ -1049,14 +1050,15 @@ def process_kwargs(cls, **kwargs: Any) -> dict[str, Any]:
10491050 for field_meta in cls .get_model_fields ():
10501051 field_build_parameters = cls .extract_field_build_parameters (field_meta = field_meta , build_args = kwargs )
10511052 if cls .should_set_field_value (field_meta , ** kwargs ) and not cls .should_use_default_value (field_meta ):
1052- field_value = getattr (cls , field_meta .name , None )
1053+ has_field_value = hasattr (cls , field_meta .name )
1054+ field_value = has_field_value and getattr (cls , field_meta .name )
10531055
10541056 # NeverNone & AlwaysNone should be treated as a normally-generated field, since this changes logic
10551057 # within get_field_value.
1056- excluded_field_value = field_value and isinstance (field_value , (NeverNone , AlwaysNone ))
1058+ excluded_field_value = has_field_value and isinstance (field_value , (NeverNone , AlwaysNone ))
10571059
10581060 # TODO why do we need the BaseFactory check here, only dunder methods which are ignored would trigger this? # noqa: FIX002
1059- if field_value and not hasattr (BaseFactory , field_meta .name ) and not excluded_field_value :
1061+ if has_field_value and not hasattr (BaseFactory , field_meta .name ) and not excluded_field_value :
10601062 if isinstance (field_value , Ignore ):
10611063 continue
10621064
0 commit comments