我在模型中创建了一个带有DateTimeField的类,我认为这会导致我的项目出错
class Job(models.Model):
category_id = models.ForeignKey(Category, on_delete=models.CASCADE)
number_of_bids = models.IntegerField()
time_starting = models.DateTimeField()
time_ending = models.DateTimeField()
返回的错误如下
C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django-2.1.1-py3.7.egg\django\db\models\fields\__init__.py:1421: RuntimeWarning: DateTimeField Job.time_ending received a naive datetime (2018-10-25 10:03:58.889072) while time zone support is active.
RuntimeWarning)
任何修复技巧
答案 0 :(得分:0)
您正在将Python的datetime值传递到模型中。
即这个
from datetime import datetime
datetime.now() # Incompatible with Python's DateTimeField directly
您需要做的是像这样从from django.utils import timezone
传递一个时区感知对象
from django.utils import timezone
timezone.now() # Will fit right into DateTimeField in your model
从文档中引用:
幼稚的日期时间对象
Python的datetime.datetime
对象具有tzinfo
属性,该属性可用于存储时区信息,表示为datetime.tzinfo子类的实例。设置此属性并描述偏移量后,就会知道datetime对象。否则,这太天真了。
您可以使用is_aware()
和is_naive()
来确定日期时间是已知的还是幼稚的。
更多信息here
答案 1 :(得分:0)
您传递的日期时间不支持时区。您必须将时区添加到datetime字段。
如果使用python / django节省时区:
from django.utils import timezone
timezone.now()
如果要序列化数据,请使用'2018-10-25 10:03:58.889072'
代替'2018-09-09T00:00:00Z'