diff options
| -rw-r--r-- | django/db/models/base.py | 3 | ||||
| -rw-r--r-- | tests/queries/test_db_returning.py | 10 |
2 files changed, 12 insertions, 1 deletions
diff --git a/django/db/models/base.py b/django/db/models/base.py index 358a744675..82ea520065 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -1153,7 +1153,8 @@ class Model(AltersData, metaclass=ModelBase): getattr(self, field.attname) if raw else field.pre_save(self, False) ) if hasattr(value, "resolve_expression"): - returning_fields.append(field) + if field not in returning_fields: + returning_fields.append(field) elif field.db_returning: returning_fields.remove(field) results = self._do_insert( diff --git a/tests/queries/test_db_returning.py b/tests/queries/test_db_returning.py index 50c164a57f..06efe023e1 100644 --- a/tests/queries/test_db_returning.py +++ b/tests/queries/test_db_returning.py @@ -42,6 +42,16 @@ class ReturningValuesTests(TestCase): ), captured_queries[-1]["sql"], ) + self.assertEqual( + captured_queries[-1]["sql"] + .split("RETURNING ")[1] + .count( + connection.ops.quote_name( + ReturningModel._meta.get_field("created").column + ), + ), + 1, + ) self.assertTrue(obj.pk) self.assertIsInstance(obj.created, datetime.datetime) |
