如何让Django 3.2将日期时间以IST时区存入数据库?
如何让Django 3.2强制以IST时区存储日期时间到数据库
要让Django不再以UTC存储时间,改用IST(印度标准时间),按以下步骤操作:
1. 修改项目配置文件 settings.py
调整两个核心配置参数:
- 指定IST对应的时区标识符:
TIME_ZONE = 'Asia/Kolkata' - 关闭UTC自动转换机制:
USE_TZ = False
当USE_TZ = False时,Django会直接用TIME_ZONE指定的时区存储和处理所有日期时间数据,不再自动转成UTC。
2. 验证存储效果
创建测试模型确认配置生效:
from django.db import models class TimeRecord(models.Model): recorded_at = models.DateTimeField(auto_now_add=True)
添加一条记录后,直接查看数据库里的recorded_at字段值,确认它是IST时间而非UTC。
3. 关键注意事项
- 因为数据库被多应用共享,必须确保所有其他应用也统一用IST时区存储时间,避免数据混乱
- 关闭
USE_TZ后,Django中的datetime对象都是无时区标记的naive类型,代码里别混用带时区(aware)和不带时区(naive)的时间对象,否则会触发错误 - 若数据库已有UTC格式的旧数据,需要手动转换为IST后更新,不然新旧数据会出现时间偏差
内容的提问来源于stack exchange,提问作者Nanda
相关产品推荐
相关产品推荐

