Django

Code

Changeset 6406

Show
Ignore:
Timestamp:
09/22/07 08:21:54 (10 months ago)
Author:
russellm
Message:

Fixed #5553 -- Fixed a serialization problem with datetime and time objects. Thanks to pigletto for the patch.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/utils/encoding.py

    r6267 r6406  
    11import types 
    22import urllib 
     3import datetime 
    34from django.utils.functional import Promise 
    45 
     
    3132    If strings_only is True, don't convert (some) non-string-like objects. 
    3233    """ 
    33     if strings_only and isinstance(s, (types.NoneType, int, long)): 
     34    if strings_only and isinstance(s, (types.NoneType, int, long, datetime.datetime, datetime.time, float)): 
    3435        return s 
    3536    if not isinstance(s, basestring,): 
  • django/trunk/tests/modeltests/serializers/models.py

    r6264 r6406  
    6464    def __unicode__(self): 
    6565        return self.title 
     66         
     67class Score(models.Model): 
     68    score = models.FloatField() 
    6669 
    6770__test__ = {'API_TESTS':""" 
     
    8487...     author = joe, 
    8588...     headline = "Time to reform copyright", 
    86 ...     pub_date = datetime(2006, 6, 16, 13, 00)) 
     89...     pub_date = datetime(2006, 6, 16, 13, 00, 11, 345)) 
    8790>>> a1.save(); a2.save() 
    8891>>> a1.categories = [sports, op_ed] 
     
    182185# Serializer output can be restricted to a subset of fields 
    183186>>> print serializers.serialize("json", Article.objects.all(), fields=('headline','pub_date')) 
    184 [{"pk": 1, "model": "serializers.article", "fields": {"headline": "Just kidding; I love TV poker", "pub_date": "2006-06-16 11:00:00"}}, {"pk": 2, "model": "serializers.article", "fields": {"headline": "Time to reform copyright", "pub_date": "2006-06-16 13:00:00"}}, {"pk": 3, "model": "serializers.article", "fields": {"headline": "Forward references pose no problem", "pub_date": "2006-06-16 15:00:00"}}] 
     187[{"pk": 1, "model": "serializers.article", "fields": {"headline": "Just kidding; I love TV poker", "pub_date": "2006-06-16 11:00:00"}}, {"pk": 2, "model": "serializers.article", "fields": {"headline": "Time to reform copyright", "pub_date": "2006-06-16 13:00:11"}}, {"pk": 3, "model": "serializers.article", "fields": {"headline": "Forward references pose no problem", "pub_date": "2006-06-16 15:00:00"}}] 
    185188 
    186189# Every string is serialized as a unicode object, also primary key  
     
    209212None 
    210213 
     214# Serialization and deserialization of floats: 
     215>>> sc = Score(score=3.4) 
     216>>> print serializers.serialize("json", [sc]) 
     217[{"pk": null, "model": "serializers.score", "fields": {"score": 3.4}}] 
     218>>> print list(serializers.deserialize('json', serializers.serialize('json', [sc])))[0].object.score 
     2193.4 
     220 
    211221"""}