You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DRF Web界面DateTime格式不匹配致POST请求出错求助

问题解决方法

核心原因

你当前的序列化器仅指定了**输出(序列化)的日期时间格式,未配置输入(反序列化)**时允许的格式。DRF默认只接受YYYY-MM-DDThh:mm:ss.uuuuuu[+HHMM|-HHMM]这类标准格式,无法解析你界面发送的DD-MM-YY --:-- --格式,因此触发报错。

另外,你的序列化器字段列表存在语法错误:insurance_valid_till后缺少逗号,会导致字段解析异常。

具体修改步骤

1. 修复序列化器字段语法错误

在serializer.py的fields元组中,给insurance_valid_till添加末尾逗号:

fields = ('customer_name', 'insurance_id', 'vehicle_number', 'rc_front', 'rc_back', 'nominee_name',
          'nominee_dob', 'insurance_created_at', 'insurance_started_at', 'insurance_valid_till',
          'is_insurance_verified', 'is_insurance_cancelled')

2. 配置DateTimeField的输入输出格式

修改insurance_started_at和insurance_valid_till字段,添加input_formats参数,指定接受你界面发送的日期时间格式(示例为%d-%m-%y %H:%M %p,对应DD-MM-YY HH:MM AM/PM,可根据你界面的实际格式调整),同时设置输出格式匹配界面显示需求:

from rest_framework import serializers
from .models import UserInsuranceModel

class UserInsuranceSerializer(serializers.ModelSerializer):
    insurance_started_at = serializers.DateTimeField(
        format="%d-%m-%y %H:%M %p",  # 界面显示的输出格式
        input_formats=["%d-%m-%y %H:%M %p", "%Y-%m-%dT%H:%M:%S.%fZ"]  # 兼容界面格式和DRF默认标准格式
    )
    insurance_valid_till = serializers.DateTimeField(
        format="%d-%m-%y %H:%M %p",
        input_formats=["%d-%m-%y %H:%M %p", "%Y-%m-%dT%H:%M:%S.%fZ"]
    )

    class Meta:
        model = UserInsuranceModel
        fields = ('customer_name', 'insurance_id', 'vehicle_number', 'rc_front', 'rc_back', 'nominee_name',
                  'nominee_dob', 'insurance_created_at', 'insurance_started_at', 'insurance_valid_till',
                  'is_insurance_verified', 'is_insurance_cancelled')

3. 格式参数说明

  • format:控制API返回给前端的日期时间显示格式,可根据需求调整占位符:
    • %d:两位日期,%m:两位月份,%y:两位年份,%H:24小时制小时,%I:12小时制小时,%M:分钟,%p:AM/PM标识
  • input_formats:指定序列化器可解析的输入格式,同时保留默认标准格式,确保兼容其他调用场景。

验证修改

重启服务后,在DRF界面提交DD-MM-YY --:-- --格式的日期时间,即可正常通过验证并完成POST请求。

内容的提问来源于stack exchange,提问作者Abhishek Surela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:47:14