Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

I am trying to test a cart creation based on django cart

But I have this error when I am trying to create the cart :

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

I did some research but I couldn't resolve my problem for datetime.datetime.now()

test_views.py in my tests directory :

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

I also have USE_TZ = True in my settings.

I tried timezone.now() but still doesn't work :

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.

EDIT :

I have this error now and it seems an error format datetime ?

    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 
like image 915
William P. Avatar asked Jun 03 '16 06:06

William P.


1 Answers

The following line creates a naive (non-timezone aware) datetime:

creationDate = datetime.datetime.now() 

Try changing that line to:

creationDate = timezone.now() 

Don't forget to import timezone at the beginning of your code:

from django.utils import timezone 
like image 86
Selcuk Avatar answered Sep 24 '22 03:09

Selcuk