Skip to content

Commit df34fcd

Browse files
committed
make Value encode time as datetime
1 parent 6279fee commit df34fcd

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

django_mongodb/features.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,6 @@ class DatabaseFeatures(BaseDatabaseFeatures):
102102
# pymongo.errors.OperationFailure: $multiply only supports numeric
103103
# types, not date. (should be wrapped in DatabaseError).
104104
"expressions.tests.FTimeDeltaTests.test_invalid_operator",
105-
# InvalidDocument: cannot encode object of type: <class 'datetime.time'>
106-
"expressions.tests.FTimeDeltaTests.test_time_subtraction",
107105
# crash in DatabaseOperations.convert_durationfield_value():
108106
# unsupported type for timedelta milliseconds component: Decimal128
109107
"expressions.tests.FTimeDeltaTests.test_durationfield_multiply_divide",

0 commit comments

Comments
 (0)