diff --git a/django/db/models/query.py b/django/db/models/query.py index 0a577f8c2d..a2af672546 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -683,6 +683,7 @@ class QuerySet(AltersData): obj = self.model(**kwargs) self._for_write = True obj.save(force_insert=True, using=self.db) + obj._state.fetch_mode = self._fetch_mode return obj create.alters_data = True diff --git a/tests/basic/tests.py b/tests/basic/tests.py index 89aef16aef..ed655833e2 100644 --- a/tests/basic/tests.py +++ b/tests/basic/tests.py @@ -290,6 +290,13 @@ class ModelTest(TestCase): ) self.assertEqual(Article.objects.get(headline="Article 10"), a10) + def test_create_method_propagates_fetch_mode(self): + article = Article.objects.fetch_mode(models.FETCH_PEERS).create( + headline="Article 10", + pub_date=datetime(2005, 7, 31, 12, 30, 45), + ) + self.assertEqual(article._state.fetch_mode, models.FETCH_PEERS) + def test_year_lookup_edge_case(self): # Edge-case test: A year lookup should retrieve all objects in # the given year, including Jan. 1 and Dec. 31.