@@ -1037,7 +1037,8 @@ def _check_declared_fields_exist_in_model(cls) -> None:
1037
1037
def process_kwargs (cls , ** kwargs : Any ) -> dict [str , Any ]:
1038
1038
"""Process the given kwargs and generate values for the factory's model.
1039
1039
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.
1041
1042
1042
1043
:param kwargs: Any build kwargs.
1043
1044
@@ -1049,14 +1050,15 @@ def process_kwargs(cls, **kwargs: Any) -> dict[str, Any]:
1049
1050
for field_meta in cls .get_model_fields ():
1050
1051
field_build_parameters = cls .extract_field_build_parameters (field_meta = field_meta , build_args = kwargs )
1051
1052
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 )
1053
1055
1054
1056
# NeverNone & AlwaysNone should be treated as a normally-generated field, since this changes logic
1055
1057
# 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 ))
1057
1059
1058
1060
# 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 :
1060
1062
if isinstance (field_value , Ignore ):
1061
1063
continue
1062
1064
0 commit comments