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

Django RunTime Warning due to receiving a native DateTime. How to solve?

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

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

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

但是,它始终以RunTime警告运行:

RuntimeWarning: DateTimeField Image.added_on received a naive datetime
(2017-12-14 14:48:22) while time zone support is active.

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


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

1
2
3
4
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