- contest 后台创建/编辑:dateutil.parser.parse 换成 datetime.fromisoformat。serializer 里 start_time/end_time 声明的是 DateTimeField,而 validate_serializer 做的是 request.data = s.data, 即重新序列化一遍,所以视图拿到的必定是 DRF 规范化后的 ISO 8601, dateutil 的宽容解析能力在这里从来没用上 - AI 学情统计:relativedelta 换成 shift_months 辅助函数,复刻月末 收缩语义(1月31日 + 1个月 = 2月28/29日)。_parse_duration 的配置 由 delta 对象改为 rewind/advance 可调用,周档和月档统一 删除依赖:python-dateutil、six Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
38 KiB
38 KiB