Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #12546. Objects with a __len__ that returns 0 can now be serial…

…ized. 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
  • Loading branch information...
commit 9f4bf525f887db32b7260909a0140d68910aa042 1 parent ae43f65
@jkocherhans jkocherhans authored
View
2  django/db/models/fields/__init__.py
@@ -404,7 +404,7 @@ def get_flatchoices(self, include_blank=True, blank_choice=BLANK_CHOICE_DASH):
return first_choice + list(self.flatchoices)
def _get_val_from_obj(self, obj):
- if obj:
+ if obj is not None:
return getattr(obj, self.attname)
else:
return self.get_default()
View
6 tests/regressiontests/serializers_regress/models.py
@@ -258,3 +258,9 @@ class InheritBaseModel(BaseModel):
class ExplicitInheritBaseModel(BaseModel):
parent = models.OneToOneField(BaseModel)
child_data = models.IntegerField()
+
+class LengthModel(models.Model):
+ data = models.IntegerField()
+
+ def __len__(self):
+ return self.data
View
10 tests/regressiontests/serializers_regress/tests.py
@@ -8,7 +8,9 @@
"""
-import unittest, datetime
+import datetime
+import decimal
+import unittest
from cStringIO import StringIO
from django.utils.functional import curry
@@ -18,10 +20,6 @@
from django.conf import settings
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
# test data objects of various kinds.
@@ -326,6 +324,8 @@ def inherited_compare(testcase, pk, klass, data):
(data_obj, 1001, BigIntegerData, -9223372036854775808),
(data_obj, 1002, BigIntegerData, 0),
(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

0 comments on commit 9f4bf52

Please sign in to comment.
Something went wrong with that request. Please try again.