summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2010-04-21 16:34:33 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2010-04-21 16:34:33 +0000
commit3fb57d47bd8d4f6c1d61c9fd9564ae6c1c262027 (patch)
tree16e76b00e62efeba6ed61ae4dd7b4cc4a6ebb13c /tests
parente8eac3290126d94580618cb4dac44cd2a7d258d6 (diff)
downloaddjango-3fb57d47bd8d4f6c1d61c9fd9564ae6c1c262027.tar.gz
Fixed #13328 -- Ensured that querysets on models with callable defaults can be pickled. No, really this time. Thanks to Alex for his help brainstorming the solution.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@13013 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/queryset_pickle/models.py20
-rw-r--r--tests/regressiontests/queryset_pickle/tests.py13
2 files changed, 28 insertions, 5 deletions
diff --git a/tests/regressiontests/queryset_pickle/models.py b/tests/regressiontests/queryset_pickle/models.py
index b0cae0a41f..df0a6e648d 100644
--- a/tests/regressiontests/queryset_pickle/models.py
+++ b/tests/regressiontests/queryset_pickle/models.py
@@ -2,11 +2,22 @@ import datetime
from django.db import models
from django.utils.translation import ugettext_lazy as _
+def standalone_number(self):
+ return 1
+
class Numbers(object):
+ @staticmethod
+ def get_static_number(self):
+ return 2
@classmethod
- def get_number(self):
- return 2
+ def get_class_number(self):
+ return 3
+
+ def get_member_number(self):
+ return 4
+
+nn = Numbers()
class Group(models.Model):
name = models.CharField(_('name'), max_length=100)
@@ -17,4 +28,7 @@ class Event(models.Model):
class Happening(models.Model):
when = models.DateTimeField(blank=True, default=datetime.datetime.now)
name = models.CharField(blank=True, max_length=100, default=lambda:"test")
- number = models.IntegerField(blank=True, default=Numbers.get_number)
+ number1 = models.IntegerField(blank=True, default=standalone_number)
+ number2 = models.IntegerField(blank=True, default=Numbers.get_static_number)
+ number3 = models.IntegerField(blank=True, default=Numbers.get_class_number)
+ number4 = models.IntegerField(blank=True, default=nn.get_member_number)
diff --git a/tests/regressiontests/queryset_pickle/tests.py b/tests/regressiontests/queryset_pickle/tests.py
index 8384df5647..f77b4f8cd0 100644
--- a/tests/regressiontests/queryset_pickle/tests.py
+++ b/tests/regressiontests/queryset_pickle/tests.py
@@ -23,5 +23,14 @@ class PickleabilityTestCase(TestCase):
def test_lambda_as_default(self):
self.assert_pickles(Happening.objects.filter(name="test"))
- def test_callable_as_default(self):
- self.assert_pickles(Happening.objects.filter(number=1))
+ def test_standalone_method_as_default(self):
+ self.assert_pickles(Happening.objects.filter(number1=1))
+
+ def test_staticmethod_as_default(self):
+ self.assert_pickles(Happening.objects.filter(number2=1))
+
+ def test_classmethod_as_default(self):
+ self.assert_pickles(Happening.objects.filter(number2=1))
+
+ def test_membermethod_as_default(self):
+ self.assert_pickles(Happening.objects.filter(number2=1))