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

Django模型DateTimeField字段保存时报expected string or bytes-like object错误

错误产生原因
  • t字典中year、month、day、hour对应的取值为字符串类型,datetime()构造函数要求传入的时间维度参数必须为整数,传入非整数类型会触发该类型错误。
  • 时间类导入不匹配:若仅导入了import datetime,未执行from datetime import datetime,直接调用datetime()时实际调用的是模块而非类,会出现类型不匹配问题。
  • 代码存在语法笔误:你提供的Order.objects.create代码段末尾使用了大括号},正确写法应为小括号),部分场景下语法解析异常也会连带触发类型错误。
对应解决方法
  • 先修正语法笔误,将create语句末尾的大括号替换为小括号。
  • 强制转换时间参数为整数,调整构造代码:
Order.objects.create(
    ...
    arrival = datetime(
        year=int(t['year']),
        month=int(t['month']),
        day=int(t['day']),
        hour=int(t['hour']),
        tzinfo=timezone.utc
    )
)
  • 检查导入语句,确保符合以下两种规范之一:
    • 方式一:from datetime import datetime,可直接调用datetime()构造时间对象
    • 方式二:import datetime,调用时需写全类路径datetime.datetime()
  • 若项目配置中开启了USE_TZ = True,建议统一使用Django原生方法生成带时区的时间对象,避免时区兼容问题:
from django.utils import timezone
from datetime import datetime

arrival_time = timezone.make_aware(
    datetime(int(t['year']), int(t['month']), int(t['day']), int(t['hour'])),
    timezone=timezone.utc
)
Order.objects.create(
    ...
    arrival = arrival_time
)

内容的提问来源于stack exchange,提问作者isaac finkelstein

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:36:08