Skip to content

Commit ffae2d6

Browse files
committed
make Value encode time as datetime
1 parent ac3279e commit ffae2d6

File tree

2 files changed

+3
-2
lines changed

2 files changed

+3
-2
lines changed

django_mongodb/expressions.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ def value(self, compiler, connection): # noqa: ARG001
7070
elif isinstance(value, datetime.date):
7171
# Turn dates into datetimes since BSON doesn't support dates.
7272
value = datetime.datetime.combine(value, datetime.datetime.min.time())
73+
elif isinstance(value, datetime.time):
74+
# Turn times into datetimes since BSON doesn't support times.
75+
value = datetime.datetime.combine(datetime.datetime.min.date(), value)
7376
elif isinstance(value, datetime.timedelta):
7477
# DurationField stores milliseconds rather than microseconds.
7578
value /= datetime.timedelta(milliseconds=1)

django_mongodb/features.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,6 @@ class DatabaseFeatures(BaseDatabaseFeatures):
7979
# pymongo.errors.OperationFailure: $multiply only supports numeric
8080
# types, not date. (should be wrapped in DatabaseError).
8181
"expressions.tests.FTimeDeltaTests.test_invalid_operator",
82-
# InvalidDocument: cannot encode object of type: <class 'datetime.time'>
83-
"expressions.tests.FTimeDeltaTests.test_time_subtraction",
8482
}
8583

8684
# $bitAnd, #bitOr, and $bitXor are new in MongoDB 6.3.

0 commit comments

Comments
 (0)