修复商家订单时间段筛选在USE_TZ=False下MySQL 500
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user