Skip to content

Commit 6d640d6

Browse files
committed
implement SchemaEditor.add/remove_field()
1 parent 89aa87f commit 6d640d6

File tree

2 files changed

+7
-20
lines changed

2 files changed

+7
-20
lines changed

django_mongodb/features.py

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -86,24 +86,6 @@ class DatabaseFeatures(BaseDatabaseFeatures):
8686
"backends.tests.ThreadTests.test_pass_connection_between_threads",
8787
"backends.tests.ThreadTests.test_closing_non_shared_connections",
8888
"backends.tests.ThreadTests.test_default_connection_thread_local",
89-
# AddField
90-
"schema.tests.SchemaTests.test_add_datefield_and_datetimefield_use_effective_default",
91-
"schema.tests.SchemaTests.test_add_field",
92-
"schema.tests.SchemaTests.test_add_field_binary",
93-
"schema.tests.SchemaTests.test_add_field_both_defaults_preserves_db_default",
94-
"schema.tests.SchemaTests.test_add_field_default_dropped",
95-
"schema.tests.SchemaTests.test_add_field_default_nullable",
96-
"schema.tests.SchemaTests.test_add_field_default_transform",
97-
"schema.tests.SchemaTests.test_add_field_durationfield_with_default",
98-
"schema.tests.SchemaTests.test_add_field_o2o_nullable",
99-
"schema.tests.SchemaTests.test_add_field_temp_default",
100-
"schema.tests.SchemaTests.test_add_field_temp_default_boolean",
101-
"schema.tests.SchemaTests.test_add_field_use_effective_default",
102-
"schema.tests.SchemaTests.test_add_text_field_with_db_default",
103-
"schema.tests.SchemaTests.test_add_textfield_default_nullable",
104-
# RemoveField
105-
"schema.tests.SchemaTests.test_remove_field",
106-
"schema.tests.SchemaTests.test_remove_indexed_field",
10789
# Add/RemoveIndex
10890
"schema.tests.SchemaTests.test_add_remove_index",
10991
"schema.tests.SchemaTests.test_composed_desc_index_with_fk",

django_mongodb/schema.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,18 @@ def delete_model(self, model):
99
self.connection.database[model._meta.db_table].drop()
1010

1111
def add_field(self, model, field):
12-
pass
12+
default = self.effective_default(field)
13+
if column := field.column:
14+
self.connection.database[model._meta.db_table].update_many(
15+
{}, [{"$set": {column: default}}]
16+
)
1317

1418
def alter_field(self, model, old_field, new_field, strict=False):
1519
pass
1620

1721
def remove_field(self, model, field):
18-
pass
22+
if column := field.column:
23+
self.connection.database[model._meta.db_table].update_many({}, {"$unset": {column: ""}})
1924

2025
def alter_index_together(self, model, old_index_together, new_index_together):
2126
pass

0 commit comments

Comments
 (0)