gpt4 book ai didi

python - Django : RunTimeWarning : DateTimeField received a naive datetime while time zone support is active

转载 作者:太空狗 更新时间:2023-10-29 17:53:02 24 4
gpt4 key购买 nike

我正在尝试基于 django cart 测试购物车创建

但是当我尝试创建购物车时出现此错误:

RunTimeWarning : DateTimeField received a naive datetime while time zone support is active

我做了一些研究,但无法解决 datetime.datetime.now()

的问题

test_views.py 在我的测试目录中:

from django.test import TestCase, Client, RequestFactory
import unittest
from django.contrib.auth.models import User, AnonymousUser
from front.models import Entreprise, Cart, CartItems
from decimal import Decimal
from front.cart import models
import datetime
import pytz
from pytz import all_timezones
from django.utils import timezone



def _create_cart_in_database(self, creationDate=datetime.datetime.now(), checkedOutDate=True):
"""
Helper function so I don't repeat myself
"""
cart = models.Cart()
cart.creationDate = creationDate
cart.checkedOutDate = False
cart.save()
return cart


def test_cart_creation(self):
creationDate = datetime.datetime.now()
cart = self._create_cart_in_database(creationDate)
id = cart.id

cart_from_database = models.Cart.objects.get(pk=id)
self.assertEquals(cart, cart_from_database)

模型.py:

class Cart(models.Model):
creationDate = models.DateTimeField()

我的设置中也有 USE_TZ = True

我试过 timezone.now() 但还是不行:

def _create_cart_in_database(self, creationDate=timezone.now(), checkedOutDate=True):

def test_cart_creation(self):
creationDate = timezone.now()

RunTimeWarning : DateTimeField Cart.creationDate received a naive datetime (2016-06-03 08:46:34.829000) while time zone support is active.

编辑:

我现在有这个错误,它似乎是错误格式日期时间?

    updated = self._save_table(raw, cls, force_insert, force_update, using, upda
te_fields)
File "C:\Python27\lib\site-packages\django-1.9.5-py2.7.egg\django\db\models\ba
se.py", line 820, in _save_table
result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
File "C:\Python27\lib\site-packages\django-1.9.5-py2.7.egg\django\db\models\ba
se.py", line 859, in _do_insert
using=using, raw=raw)
File "C:\Python27\lib\site-packages\django-1.9.5-py2.7.egg\django\db\models\ma
nager.py", line 122, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "C:\Python27\lib\site-packages\django-1.9.5-py2.7.egg\django\db\models\qu
ery.py", line 1039, in _insert
return query.get_compiler(using=using).execute_sql(return_id)
File "C:\Python27\lib\site-packages\django-1.9.5-py2.7.egg\django\db\models\sq
l\compiler.py", line 1059, in execute_sql
for sql, params in self.as_sql():
File "C:\Python27\lib\site-packages\django-1.9.5-py2.7.egg\django\db\models\sq
l\compiler.py", line 1019, in as_sql
for obj in self.query.objs
File "C:\Python27\lib\site-packages\django-1.9.5-py2.7.egg\django\db\models\sq
l\compiler.py", line 958, in prepare_value
value = field.get_db_prep_save(value, connection=self.connection)
File "C:\Python27\lib\site-packages\django-1.9.5-py2.7.egg\django\db\models\fi
elds\__init__.py", line 728, in get_db_prep_save
prepared=False)
File "C:\Python27\lib\site-packages\django-1.9.5-py2.7.egg\django\db\models\fi
elds\__init__.py", line 1461, in get_db_prep_value
value = self.get_prep_value(value)
File "C:\Python27\lib\site-packages\django-1.9.5-py2.7.egg\django\db\models\fi
elds\__init__.py", line 1440, in get_prep_value
value = super(DateTimeField, self).get_prep_value(value)
File "C:\Python27\lib\site-packages\django-1.9.5-py2.7.egg\django\db\models\fi
elds\__init__.py", line 1296, in get_prep_value
return self.to_python(value)
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

最佳答案

以下行创建了一个天真的(非时区感知)日期时间:

creationDate = datetime.datetime.now()

尝试将该行更改为:

creationDate = timezone.now()

不要忘记在代码开头导入 timezone:

from django.utils import timezone

关于python - Django : RunTimeWarning : DateTimeField received a naive datetime while time zone support is active,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37607411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com