Skip to content

Commit 358e2b7

Browse files
committed
make unique indexes exclude nulls
1 parent 9a49100 commit 358e2b7

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

django_mongodb/schema.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,13 +127,20 @@ def _get_name(field_names):
127127
def add_index(self, model, index, unique=False):
128128
if index.contains_expressions:
129129
return
130+
kwargs = {}
131+
if unique:
132+
filter_expression = {}
133+
for field_name, _ in index.fields_orders:
134+
field = model._meta.get_field(field_name)
135+
filter_expression[field_name] = {"$type": field.db_type(self.connection)}
136+
kwargs = {"partialFilterExpression": filter_expression, "unique": True}
130137
idx = IndexModel(
131138
[
132139
(model._meta.get_field(field_name).column, 1 if order == "" else -1)
133140
for field_name, order in index.fields_orders
134141
],
135142
name=index.name,
136-
unique=unique,
143+
**kwargs,
137144
)
138145
self.connection.database[model._meta.db_table].create_indexes([idx])
139146

0 commit comments

Comments
 (0)