Skip to content

Commit 5001133

Browse files
committed
Fix bug on vendors that does not support expression indexes
1 parent 0132005 commit 5001133

File tree

1 file changed

+8
-12
lines changed

1 file changed

+8
-12
lines changed

django_mongodb_backend/schema.py

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -352,15 +352,15 @@ def _remove_field_index(self, model, field, column_prefix=""):
352352
)
353353
collection.drop_index(index_names[0])
354354

355-
def _check_supported_expressions(self, expressions):
355+
def _check_supports_expression_indexes(self, expressions):
356356
if self.connection.vendor == "mongodb":
357-
for expression in expressions:
358-
expression = (
359-
expression.expression if isinstance(expression, OrderBy) else expression
357+
return all(
358+
isinstance(
359+
expression.expression if isinstance(expression, OrderBy) else expression, F
360360
)
361-
if not isinstance(expression, F):
362-
return False
363-
return True
361+
for expression in expressions
362+
)
363+
return self.connection.features.supports_expression_indexes
364364

365365
def _unique_supported(
366366
self,
@@ -374,11 +374,7 @@ def _unique_supported(
374374
(not condition or self.connection.features.supports_partial_indexes)
375375
and (not deferrable or self.connection.features.supports_deferrable_unique_constraints)
376376
and (not include or self.connection.features.supports_covering_indexes)
377-
and (
378-
not expressions
379-
or self._check_supported_expressions(expressions)
380-
or self.connection.features.supports_expression_indexes
381-
)
377+
and (not expressions or self._check_supports_expression_indexes(expressions))
382378
and (
383379
nulls_distinct is None
384380
or self.connection.features.supports_nulls_distinct_unique_constraints

0 commit comments

Comments
 (0)