diff --git a/orders/services/merchant_order_list_filters.py b/orders/services/merchant_order_list_filters.py index 33300df..fb93298 100644 --- a/orders/services/merchant_order_list_filters.py +++ b/orders/services/merchant_order_list_filters.py @@ -1,6 +1,7 @@ """商家订单列表通用筛选(商家老板接口 + 子客服列表共用)。""" from datetime import datetime +from django.conf import settings from django.db.models import Q from django.utils import timezone from django.utils.dateparse import parse_datetime @@ -8,11 +9,16 @@ from django.utils.dateparse import parse_datetime from backend.utils import pick_leixing_id -def _aware_dt(dt): +def _db_dt(dt): + """与项目 USE_TZ 设置一致:USE_TZ=False 时必须返回 naive datetime。""" if dt is None: return None - if timezone.is_naive(dt): - return timezone.make_aware(dt, timezone.get_current_timezone()) + if settings.USE_TZ: + if timezone.is_naive(dt): + return timezone.make_aware(dt, timezone.get_current_timezone()) + return dt + if timezone.is_aware(dt): + return timezone.make_naive(dt, timezone.get_current_timezone()) return dt @@ -30,15 +36,15 @@ def parse_order_list_bound(value, is_end=False): return None if is_end: base = base.replace(hour=23, minute=59, second=59) - return _aware_dt(base) + return _db_dt(base) dt = parse_datetime(raw.replace(' ', 'T', 1) if ' ' in raw and 'T' not in raw else raw) if dt is None: try: base = datetime.strptime(raw[:19], '%Y-%m-%d %H:%M:%S') - return _aware_dt(base) + return _db_dt(base) except ValueError: return None - return _aware_dt(dt) + return _db_dt(dt) def apply_merchant_order_list_filters(qs, data):