Commit 9f4bf525 authored by Joseph Kocherhans's avatar Joseph Kocherhans
Browse files

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

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
parent ae43f651
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -404,7 +404,7 @@ class Field(object):
        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()
+6 −0
Original line number Diff line number Diff line
@@ -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
+5 −5
Original line number Diff line number Diff line
@@ -8,7 +8,9 @@ forward, backwards and self references.
"""


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.core import management
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 @@ The end."""),
    (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