Django : 运行时警告 : 日期时间字段在时区支持处于活动状态时收到一个朴素的日期时间



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

但是当我尝试创建购物车时,我遇到了此错误:

运行时警告:时区支持处于活动状态时,日期时间字段收到朴素日期时间

做了一些研究,但我无法解决我的问题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)

models.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()

运行时警告:时区支持处于活动状态时,日期时间字段购物车创建日期收到简单的日期时间 (2016-06-03 08:46:34.829000)。

编辑:

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

    updated = self._save_table(raw, cls, force_insert, force_update, using, upda
te_fields)
  File "C:Python27libsite-packagesdjango-1.9.5-py2.7.eggdjangodbmodelsba
se.py", line 820, in _save_table
    result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
  File "C:Python27libsite-packagesdjango-1.9.5-py2.7.eggdjangodbmodelsba
se.py", line 859, in _do_insert
    using=using, raw=raw)
  File "C:Python27libsite-packagesdjango-1.9.5-py2.7.eggdjangodbmodelsma
nager.py", line 122, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "C:Python27libsite-packagesdjango-1.9.5-py2.7.eggdjangodbmodelsqu
ery.py", line 1039, in _insert
    return query.get_compiler(using=using).execute_sql(return_id)
  File "C:Python27libsite-packagesdjango-1.9.5-py2.7.eggdjangodbmodelssq
lcompiler.py", line 1059, in execute_sql
    for sql, params in self.as_sql():
  File "C:Python27libsite-packagesdjango-1.9.5-py2.7.eggdjangodbmodelssq
lcompiler.py", line 1019, in as_sql
    for obj in self.query.objs
  File "C:Python27libsite-packagesdjango-1.9.5-py2.7.eggdjangodbmodelssq
lcompiler.py", line 958, in prepare_value
    value = field.get_db_prep_save(value, connection=self.connection)
  File "C:Python27libsite-packagesdjango-1.9.5-py2.7.eggdjangodbmodelsfi
elds__init__.py", line 728, in get_db_prep_save
    prepared=False)
  File "C:Python27libsite-packagesdjango-1.9.5-py2.7.eggdjangodbmodelsfi
elds__init__.py", line 1461, in get_db_prep_value
    value = self.get_prep_value(value)
  File "C:Python27libsite-packagesdjango-1.9.5-py2.7.eggdjangodbmodelsfi
elds__init__.py", line 1440, in get_prep_value
    value = super(DateTimeField, self).get_prep_value(value)
  File "C:Python27libsite-packagesdjango-1.9.5-py2.7.eggdjangodbmodelsfi
elds__init__.py", line 1296, in get_prep_value
    return self.to_python(value)
  File "C:Python27libsite-packagesdjango-1.9.5-py2.7.eggdjangodbmodelsfi
elds__init__.py", line 1399, in to_python
    parsed = parse_datetime(value)
  File "C:Python27libsite-packagesdjango-1.9.5-py2.7.eggdjangoutilsdatepa
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

最新更新