django - 在时区支持处于活动状态时收到一个天真的日期时间
问题描述
我正在尝试将一些记录插入到 Django 模型中,其中包括一些 unix ctime 格式的旧日期。我将其转换为 YYYY-MM-DD hh:mm:ss 并将其保存到日期时间字段中的模型中。
在运行导入作业(将 unix 日期转换为 YYYY-MM-DD hh:mm:ss 的函数)并保存它时,我在下面收到警告
C:\Python\Python36\lib\site-packages\django\db\models\fields\__init__.py:1421: RuntimeWarning: DateTimeField SensorRecords.aqdate received a naive datetime (2012-07-06 05:00:00) while time zone support is active.
RuntimeWarning)
我应该如何导入它以避免这种情况?
这是我的转换器功能
def ctodatetime (ctimeinput):
etime=time.ctime(int(ctimeinput))
btime=datetime.datetime.strptime(etime,"%a %b %d %H:%M:%S %Y")
print(btime)
return btime
这是我的模型的片段
class SensorRecords(models.Model):
sensorid = models.IntegerField(default=0)
aqdate = models.DateTimeField(default= "1970-01-01 00:00:00")
cmpflaf = models.BooleanField(default=0)
解决方案
您应该在传递给模型实例之前添加tz_info
到对象。datetime
import pytz
import datetime
import time
from django.conf import settings
def ctodatetime(ctimeinput):
etime = time.ctime(int(ctimeinput))
btime = datetime.datetime.strptime(etime, "%a %b %d %H:%M:%S %Y")
tz_aware_datetetime = btime.replace(tzinfo=pytz.timezone(settings.TIME_ZONE))
print(tz_aware_datetetime)
return tz_aware_datetetime
该.replace()
函数返回一个新的日期时间对象
有关更多信息,请参阅此 SO 帖子RuntimeWarning: DateTimeField received a naive datetime
推荐阅读
- node.js - 如何在会话中设置使用 AdonisJs 在外部 API 下进行身份验证的用户?
- python - 带有包含 NaN 的轴的 Seaborn 条形图
- python - Python 无法识别数字
- css - 为什么 `overflow-x: auto;` 在 `flex-direction: row;` 祖先中表现异常?
- react-native - 反应原生,
在不止一行 - tensorflow - 在没有 infiniband 设备的情况下使用带有 VERBS 支持的 tensorflow
- javascript - 在 Summernote 中的后退按钮上获取文本
- javascript - 在本机反应中生成签名 APK 时出错
- javascript - Highcharts Maps 来自 geojson 的钻取图
- python - Python APScheduler - AsyncIOScheduler 如何工作?