Skip to content

Commit 60723c7

Browse files
committed
add support for Meta.indexes on embedded models
1 parent 07d274c commit 60723c7

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed

django_mongodb/schema.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def _create_model_indexes(self, model, column_prefix="", parent_model=None):
6969
self.add_constraint(model, constraint)
7070
# Meta.indexes
7171
for index in model._meta.indexes:
72-
self.add_index(model, index)
72+
self.add_index(model, index, column_prefix=column_prefix, parent_model=parent_model)
7373

7474
def delete_model(self, model):
7575
# Delete implicit M2m tables.

tests/schema_/models.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@ class Address(models.Model):
1717
uid = models.IntegerField(unique=True)
1818
unique_together_one = models.CharField(max_length=10)
1919
unique_together_two = models.CharField(max_length=10)
20+
indexed_by_index_one = models.CharField(max_length=10)
2021

2122
class Meta:
2223
apps = new_apps
24+
indexes = [models.Index(fields=["indexed_by_index_one"])]
2325
unique_together = [("unique_together_one", "unique_together_two")]
2426

2527

@@ -30,9 +32,11 @@ class Author(models.Model):
3032
employee_id = models.IntegerField(unique=True)
3133
unique_together_three = models.CharField(max_length=10)
3234
unique_together_four = models.CharField(max_length=10)
35+
indexed_by_index_two = models.CharField(max_length=10)
3336

3437
class Meta:
3538
apps = new_apps
39+
indexes = [models.Index(fields=["indexed_by_index_two"])]
3640
unique_together = [("unique_together_three", "unique_together_four")]
3741

3842

tests/schema_/test_embedded_model.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,3 +224,23 @@ def test_unique_together(self):
224224
)
225225
editor.delete_model(Author)
226226
self.assertTableNotExists(Author)
227+
228+
def test_index(self):
229+
"""Meta.indexes on an embedded model."""
230+
with connection.schema_editor() as editor:
231+
editor.create_model(Book)
232+
self.assertTableExists(Book)
233+
# Embedded uniques are created.
234+
self.assertEqual(
235+
self.get_constraints_for_columns(Book, ["author.indexed_by_index_two"]),
236+
["schema__aut_indexed_7e3a5c_idx"],
237+
)
238+
self.assertEqual(
239+
self.get_constraints_for_columns(
240+
Book,
241+
["author.address.indexed_by_index_one"],
242+
),
243+
["schema__add_indexed_ef5dd6_idx"],
244+
)
245+
editor.delete_model(Author)
246+
self.assertTableNotExists(Author)

0 commit comments

Comments
 (0)