From c098777082010896f7943d201dc29aed7f076892 Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Thu, 12 Dec 2024 13:35:07 -0500 Subject: [PATCH 1/2] reclassify tests for running converters on returning fields from insert --- django_mongodb/features.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/django_mongodb/features.py b/django_mongodb/features.py index ea7f69bd6..7622ddd5a 100644 --- a/django_mongodb/features.py +++ b/django_mongodb/features.py @@ -197,7 +197,6 @@ def django_test_expected_failures(self): }, "AutoField not supported.": { "bulk_create.tests.BulkCreateTests.test_bulk_insert_nullable_fields", - "custom_pk.tests.CustomPKTests.test_auto_field_subclass_create", "introspection.tests.IntrospectionTests.test_sequence_list", "lookup.tests.LookupTests.test_filter_by_reverse_related_field_transform", "lookup.tests.LookupTests.test_in_ignore_none_with_unhashable_items", @@ -212,6 +211,12 @@ def django_test_expected_failures(self): "model_fields.test_autofield.SmallAutoFieldTests", "queries.tests.TestInvalidValuesRelation.test_invalid_values", }, + "Converters aren't run on returning fields from insert.": { + # Unsure this is needed for this backend. Can implement by request. + # https://github.com/django/django/commit/d9de74141e8a920940f1b91ed0a3ccb835b55729 + "custom_pk.tests.CustomPKTests.test_auto_field_subclass_bulk_create", + "custom_pk.tests.CustomPKTests.test_auto_field_subclass_create", + }, "MongoDB does not enforce PositiveIntegerField constraint.": { "model_fields.test_integerfield.PositiveIntegerFieldTests.test_negative_values", }, From 546554ad33f75edaf1d2259a14a17ffd07779288 Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Thu, 12 Dec 2024 10:58:26 -0500 Subject: [PATCH 2/2] made QuerySet.bulk_create() set pk on created model instances --- django_mongodb/compiler.py | 4 ++-- django_mongodb/features.py | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/django_mongodb/compiler.py b/django_mongodb/compiler.py index ea1305678..46d3afaab 100644 --- a/django_mongodb/compiler.py +++ b/django_mongodb/compiler.py @@ -677,13 +677,13 @@ def execute_sql(self, returning_fields=None): field_values[field.column] = value objs.append(field_values) - return [self.insert(objs, returning_fields=returning_fields)] + return self.insert(objs, returning_fields=returning_fields) @wrap_database_errors def insert(self, docs, returning_fields=None): """Store a list of documents using field columns as element names.""" inserted_ids = self.collection.insert_many(docs).inserted_ids - return inserted_ids if returning_fields else [] + return [(x,) for x in inserted_ids] if returning_fields else [] @cached_property def collection_name(self): diff --git a/django_mongodb/features.py b/django_mongodb/features.py index 7622ddd5a..433c9f009 100644 --- a/django_mongodb/features.py +++ b/django_mongodb/features.py @@ -10,6 +10,7 @@ class DatabaseFeatures(BaseDatabaseFeatures): allows_multiple_constraints_on_same_fields = False can_create_inline_fk = False can_introspect_foreign_keys = False + can_return_rows_from_bulk_insert = True greatest_least_ignores_nulls = True has_json_object_function = False has_native_json_field = True