Skip to content

Commit d6cbe81

Browse files
committed
make Value encode time as datetime
1 parent d0e9cf4 commit d6cbe81

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
@@ -81,6 +81,9 @@ def value(self, compiler, connection): # noqa: ARG001
8181
elif isinstance(value, datetime.date):
8282
# Turn dates into datetimes since BSON doesn't support dates.
8383
value = datetime.datetime.combine(value, datetime.datetime.min.time())
84+
elif isinstance(value, datetime.time):
85+
# Turn times into datetimes since BSON doesn't support times.
86+
value = datetime.datetime.combine(datetime.datetime.min.date(), value)
8487
elif isinstance(value, datetime.timedelta):
8588
# DurationField stores milliseconds rather than microseconds.
8689
value /= datetime.timedelta(milliseconds=1)

django_mongodb/features.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,6 @@ class DatabaseFeatures(BaseDatabaseFeatures):
7272
# pymongo.errors.OperationFailure: $multiply only supports numeric
7373
# types, not date. (should be wrapped in DatabaseError).
7474
"expressions.tests.FTimeDeltaTests.test_invalid_operator",
75-
# InvalidDocument: cannot encode object of type: <class 'datetime.time'>
76-
"expressions.tests.FTimeDeltaTests.test_time_subtraction",
7775
# crash in DatabaseOperations.convert_durationfield_value():
7876
# unsupported type for timedelta milliseconds component: Decimal128
7977
"expressions.tests.FTimeDeltaTests.test_durationfield_multiply_divide",

0 commit comments

Comments
 (0)