Skip to content

Commit 817d03a

Browse files
committed
Make Value wrap lists in $literal
1 parent 3851151 commit 817d03a

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

django_mongodb_backend/expressions.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,9 @@ def when(self, compiler, connection):
190190

191191
def value(self, compiler, connection): # noqa: ARG001
192192
value = self.value
193-
if isinstance(value, int):
194-
# Wrap numbers in $literal to prevent ambiguity when Value appears in
195-
# $project.
193+
if isinstance(value, list | int):
194+
# Wrap lists & numbers in $literal to prevent ambiguity when Value
195+
# appears in $project.
196196
return {"$literal": value}
197197
if isinstance(value, Decimal):
198198
return Decimal128(value)

tests/expressions_/test_value.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ def test_datetime(self):
2323
def test_decimal(self):
2424
self.assertEqual(Value(Decimal("1.0")).as_mql(None, None), Decimal128("1.0"))
2525

26+
def test_list(self):
27+
self.assertEqual(Value([1, 2]).as_mql(None, None), {"$literal": [1, 2]})
28+
2629
def test_time(self):
2730
self.assertEqual(
2831
Value(datetime.time(9, 8, 7)).as_mql(None, None),

0 commit comments

Comments
 (0)