由于接收到本机DateTime而导致Django RunTime警告。怎么解决?

时间:2018-01-08 15:31:59

标签: python django datetime django-models

在我的settings.py中,TIME_ZONE设置为' UTC'。

在我的一个模型中,我从外部API导入created_on字段,该字段以utc格式返回时间。例如:1515374422.0要将其转换为DateTime格式,我使用:

created_on=datetime.datetime.fromtimestamp(float(1515374422.0))
post=Post(name="ABC", created_on=created_on)

但是,它始终以RunTime警告:

运行
  

RuntimeWarning:DateTimeField Image.added_on收到了一个天真的日期时间   (2017-12-14 14:48:22)虽然时区支持有效。

我不明白。那是什么意思? DateTime转换代码有问题吗?

1 个答案:

答案 0 :(得分:1)

简短的回答是django orm期望所有datetime个对象都设置时区。对于您的代码,由于您知道时区以UTC格式出现,因此您可以执行以下操作:

import pytz
created_on=datetime.datetime.fromtimestamp(float(1515374422.0))
created_on = created_on.replace(tzinfo=pytz.utc)
post=Post(name="ABC", created_on=created_on)

附加行将添加创建的时区信息,以便明确要求UTC中的datetime