Skip to content

Commit

Permalink
[1.1.X] Fixed #12546. Objects with a __len__ that returns 0 can now b…
Browse files Browse the repository at this point in the history
…e serialized. Thanks, casobn for the report and Alex Gaynor for the patch and tests. Backport of r12576 from trunk.

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.1.X@12577 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
jkocherhans committed Feb 24, 2010
1 parent 692d122 commit 07f2d19
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 3 deletions.
2 changes: 1 addition & 1 deletion django/db/models/fields/__init__.py
Expand Up @@ -277,7 +277,7 @@ def get_flatchoices(self, include_blank=True, blank_choice=BLANK_CHOICE_DASH):
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()
Expand Down
7 changes: 6 additions & 1 deletion tests/regressiontests/serializers_regress/models.py
Expand Up @@ -252,4 +252,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
5 changes: 4 additions & 1 deletion tests/regressiontests/serializers_regress/tests.py
Expand Up @@ -8,7 +8,8 @@
""" """




import unittest, datetime import datetime
import unittest
from cStringIO import StringIO from cStringIO import StringIO


from django.utils.functional import curry from django.utils.functional import curry
Expand Down Expand Up @@ -321,6 +322,8 @@ def inherited_compare(testcase, pk, klass, data):
(inherited_obj, 900, InheritAbstractModel, {'child_data':37,'parent_data':42}), (inherited_obj, 900, InheritAbstractModel, {'child_data':37,'parent_data':42}),
(inherited_obj, 910, ExplicitInheritBaseModel, {'child_data':37,'parent_data':42}), (inherited_obj, 910, ExplicitInheritBaseModel, {'child_data':37,'parent_data':42}),
(inherited_obj, 920, InheritBaseModel, {'child_data':37,'parent_data':42}), (inherited_obj, 920, InheritBaseModel, {'child_data':37,'parent_data':42}),
(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
Expand Down

0 comments on commit 07f2d19

Please sign in to comment.