diff --git a/model_bakery/baker.py b/model_bakery/baker.py index b6f16d6d..9229aaf6 100644 --- a/model_bakery/baker.py +++ b/model_bakery/baker.py @@ -698,10 +698,10 @@ def _handle_generic_foreign_keys(self, instance: Model, attrs: Dict[str, Any]): content_type_field = data["content_type_field"] object_id_field = data["object_id_field"] value = data["value"] - if value is None: - continue if is_iterator(value): value = next(value) + if value is None: + continue setattr(instance, field_name, value) setattr( diff --git a/tests/test_filling_fields.py b/tests/test_filling_fields.py index 0fd4970a..95a259b7 100644 --- a/tests/test_filling_fields.py +++ b/tests/test_filling_fields.py @@ -341,6 +341,24 @@ def test_with_iter(self): assert dummies[1].content_type == expected_content_type assert dummies[1].object_id == objects[1].pk + def test_with_none_in_iter(self): + from django.contrib.contenttypes.models import ContentType + + profile = baker.make(models.Profile) + dummies = baker.make( + models.DummyGenericForeignKeyModel, + content_object=iter((None, profile)), + _quantity=2, + ) + + expected_content_type = ContentType.objects.get_for_model(models.Profile) + + assert dummies[0].content_object is None + + assert dummies[1].content_object == profile + assert dummies[1].content_type == expected_content_type + assert dummies[1].object_id == profile.pk + def test_with_fill_optional(self): from django.contrib.contenttypes.models import ContentType