@@ -17,14 +17,24 @@ def adapt_datefield_value(self, value):
17
17
return datetime .datetime .combine (value , datetime .datetime .min .time ())
18
18
19
19
def adapt_datetimefield_value (self , value ):
20
- if not settings .USE_TZ and value is not None and timezone .is_naive (value ):
21
- value = timezone .make_aware (value )
20
+ if value is None :
21
+ return None
22
+ if timezone .is_aware (value ):
23
+ if settings .USE_TZ :
24
+ value = timezone .make_naive (value , self .connection .timezone )
25
+ else :
26
+ raise ValueError (
27
+ "MongoDB backend does not support timezone-aware "
28
+ "datetimes when USE_TZ is False."
29
+ )
22
30
return value
23
31
24
32
def adapt_timefield_value (self , value ):
25
33
"""Store TimeField as datetime."""
26
34
if value is None :
27
35
return None
36
+ if timezone .is_aware (value ):
37
+ raise ValueError ("MongoDB backend does not support timezone-aware times." )
28
38
return datetime .datetime .combine (datetime .datetime .min .date (), value )
29
39
30
40
def get_db_converters (self , expression ):
@@ -33,7 +43,7 @@ def get_db_converters(self, expression):
33
43
if internal_type == "DateField" :
34
44
converters .append (self .convert_datefield_value )
35
45
elif internal_type == "DateTimeField" :
36
- if not settings .USE_TZ :
46
+ if settings .USE_TZ :
37
47
converters .append (self .convert_datetimefield_value )
38
48
elif internal_type == "DecimalField" :
39
49
converters .append (self .convert_decimalfield_value )
@@ -50,8 +60,7 @@ def convert_datefield_value(self, value, expression, connection):
50
60
51
61
def convert_datetimefield_value (self , value , expression , connection ):
52
62
if value is not None :
53
- # Django expects naive datetimes when settings.USE_TZ is False.
54
- value = timezone .make_naive (value )
63
+ value = timezone .make_aware (value , self .connection .timezone )
55
64
return value
56
65
57
66
def convert_decimalfield_value (self , value , expression , connection ):
0 commit comments