此问题已在此处有答案:
RuntimeWarning: DateTimeField received a naive datetime(12个回答)
6天前关闭
我试图测试基于django cart的购物车创建。但是当我尝试创建购物车时,我有以下警告:
RunTimeWarning: DateTimeField received a naive datetime while time zone support
is active
我做了一些研究,但我不能解决我的问题datetime.datetime.now()
。
我的测试目录中的test_views.py:
from front.cart import models
import datetime
from django.utils import timezone
def create_cart_in_database():
cart = models.Cart()
cart.creationDate = datetime.datetime.now()
cart.save()
网址:models.py
class Cart(models.Model):
creationDate = models.DateTimeField()
我也有USE_TZ = True
在我的设置。
我试过timezone.now()
,但仍然不工作:
def create_cart_in_database():
creationDate = timezone.now()
RunTimeWarning: DateTimeField Cart.creationDate received a naive datetime
(2016-06-03 08:46:34.829000) while time zone support is active.
编辑:我现在有这个错误,它似乎是一个与日期时间格式有关的错误?
File "C:\Python27\lib\site-packages\django-1.9.5-py2.7.egg\django\db\models\fi
elds\__init__.py", line 1399, in to_python
parsed = parse_datetime(value)
File "C:\Python27\lib\site-packages\django-1.9.5-py2.7.egg\django\utils\datepa
rse.py", line 93, in parse_datetime
match = datetime_re.match(value)
TypeError: expected string or buffer
2条答案
按热度按时间3ks5zfa01#
下面的代码行创建了一个简单的(非时区感知的)日期时间:
试着把这一行改成:
不要忘记在代码的开头导入
timezone
:jpfvwuh42#
如果我们看一下源代码,
django.utilts.timezone.now
只是datetime.datetime.now
,时区设置为UTC。因此,如果你想让它与datetime
一起工作,那么使用以下命令:如果在设置特定的日期时间(而不是
now
)时收到警告,那么使用它应该是的任何时区传递tzinfo
。如果是UTC,则非常简单,只需传递datetime.timezone.utc
。如果日期时间应该在特定的时区,那么从Python 3.9开始,
zoneinfo
模块,它提供了支持IANA时区数据库的实现,在标准库中。例如,如果时区应该是东京(或UTC+09:00),那么可以使用以下内容。另一方面,如果你
或
看看你是不是忘了调用这个函数了。
timezone.now()
/datetime.datetime.now()
,而是传递函数本身,例如:timezone.now
。