Fixed #12546. Objects with a __len__ that returns 0 can now be serialized. Thanks, casobn for the report and Alex Gaynor for the patch and tests.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12576 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
ae43f651f2
commit
9f4bf525f8
|
@ -404,7 +404,7 @@ class Field(object):
|
||||||
return first_choice + list(self.flatchoices)
|
return first_choice + list(self.flatchoices)
|
||||||
|
|
||||||
def _get_val_from_obj(self, obj):
|
def _get_val_from_obj(self, obj):
|
||||||
if obj:
|
if obj is not None:
|
||||||
return getattr(obj, self.attname)
|
return getattr(obj, self.attname)
|
||||||
else:
|
else:
|
||||||
return self.get_default()
|
return self.get_default()
|
||||||
|
|
|
@ -258,3 +258,9 @@ class InheritBaseModel(BaseModel):
|
||||||
class ExplicitInheritBaseModel(BaseModel):
|
class ExplicitInheritBaseModel(BaseModel):
|
||||||
parent = models.OneToOneField(BaseModel)
|
parent = models.OneToOneField(BaseModel)
|
||||||
child_data = models.IntegerField()
|
child_data = models.IntegerField()
|
||||||
|
|
||||||
|
class LengthModel(models.Model):
|
||||||
|
data = models.IntegerField()
|
||||||
|
|
||||||
|
def __len__(self):
|
||||||
|
return self.data
|
||||||
|
|
|
@ -8,7 +8,9 @@ forward, backwards and self references.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
import unittest, datetime
|
import datetime
|
||||||
|
import decimal
|
||||||
|
import unittest
|
||||||
from cStringIO import StringIO
|
from cStringIO import StringIO
|
||||||
|
|
||||||
from django.utils.functional import curry
|
from django.utils.functional import curry
|
||||||
|
@ -18,10 +20,6 @@ from django.core import management
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
from models import *
|
from models import *
|
||||||
try:
|
|
||||||
import decimal
|
|
||||||
except ImportError:
|
|
||||||
from django.utils import _decimal as decimal
|
|
||||||
|
|
||||||
# A set of functions that can be used to recreate
|
# A set of functions that can be used to recreate
|
||||||
# test data objects of various kinds.
|
# test data objects of various kinds.
|
||||||
|
@ -326,6 +324,8 @@ The end."""),
|
||||||
(data_obj, 1001, BigIntegerData, -9223372036854775808),
|
(data_obj, 1001, BigIntegerData, -9223372036854775808),
|
||||||
(data_obj, 1002, BigIntegerData, 0),
|
(data_obj, 1002, BigIntegerData, 0),
|
||||||
(data_obj, 1003, BigIntegerData, None),
|
(data_obj, 1003, BigIntegerData, None),
|
||||||
|
(data_obj, 1004, LengthModel, 0),
|
||||||
|
(data_obj, 1005, LengthModel, 1),
|
||||||
]
|
]
|
||||||
|
|
||||||
# Because Oracle treats the empty string as NULL, Oracle is expected to fail
|
# Because Oracle treats the empty string as NULL, Oracle is expected to fail
|
||||||
|
|
Loading…
Reference in New Issue