﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
14037	models.DateField don't serialize JSON	Carlo Pires	nobody	"When serializing records with DateField(auto_now=True), the serialized
string is incorrect because created record is initialized with date.datetime
and django.core.serializers.Serializer.handle_field don't call 
DateField.value_to_string() as date.datetime is listed in 
django.utils.encoding.is_protected_type.

Start an app called bugmodel and create:

{{{
#!python
from django.db import models

class BugSerial(models.Model):
        date = models.DateField(auto_now=True)

}}}

Now, after syncdb, the bug:
{{{
./manage.py shell
}}}

{{{
#!python

In [1]: from bugmodel.models import BugSerial

In [2]: r = BugSerial()

In [3]: r.save()

In [4]: from django.core.serializers import serialize

In [5]: serialized = serialize('json', [r])

In [6]: serialized
Out[6]: '[{""pk"": 1, ""model"": ""bugmodel.bugserial"", ""fields"": {""date"": ""2010-07-30 14:24:09""}}]'

In [7]: from django.core.serializers import deserialize

In [8]: unserialized = deserialize('json', serialized)

In [9]: unserialized
Out[9]: <generator object Deserializer at 0x187d0f0>

In [10]: list(unserialized)
---------------------------------------------------------------------------
ValidationError                           Traceback (most recent call last)

/home/carlo/bug/bug/<ipython console> in <module>()

/usr/lib/python2.6/dist-packages/django/core/serializers/json.py in Deserializer(stream_or_string, **options)
     36     else:
     37         stream = stream_or_string
---> 38     for obj in PythonDeserializer(simplejson.load(stream), **options):
     39         yield obj
     40 

/usr/lib/python2.6/dist-packages/django/core/serializers/python.py in Deserializer(object_list, **options)
    126             # Handle all other fields

    127             else:
--> 128                 data[field.name] = field.to_python(field_value)
    129 
    130         yield base.DeserializedObject(Model(**data), m2m_data)

/usr/lib/python2.6/dist-packages/django/db/models/fields/__init__.py in to_python(self, value)
    606 
    607         if not ansi_date_re.search(value):
--> 608             raise exceptions.ValidationError(self.error_messages['invalid'])
    609         # Now that we have the date string in YYYY-MM-DD format, check to make

    610         # sure it's a valid date.


ValidationError: [u'Enter a valid date in YYYY-MM-DD format.']

}}}
"		closed	Database layer (models, ORM)	1.2		duplicate			Unreviewed	0	0	0	0	0	0
