summaryrefslogtreecommitdiff
path: root/tests/regressiontests/forms/models.py
diff options
context:
space:
mode:
authorLuke Plant <L.Plant.98@cantab.net>2010-03-08 15:03:30 +0000
committerLuke Plant <L.Plant.98@cantab.net>2010-03-08 15:03:30 +0000
commitbae921dcff699b827cd423f01ed125221b32fc9a (patch)
tree70978b4c50fce2f597ca0339438876e699db2287 /tests/regressiontests/forms/models.py
parent5e3a2e2f3956f358b5e82e217c20bb0b36fb0665 (diff)
Fixed #11940 - ModelForm evaluates callable default values on form class creation
Thanks to Harm Geerts for the report and initial patch. git-svn-id: http://code.djangoproject.com/svn/django/trunk@12721 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/forms/models.py')
-rw-r--r--tests/regressiontests/forms/models.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/tests/regressiontests/forms/models.py b/tests/regressiontests/forms/models.py
index 2127d40d95..229c50556e 100644
--- a/tests/regressiontests/forms/models.py
+++ b/tests/regressiontests/forms/models.py
@@ -17,10 +17,17 @@ temp_storage = FileSystemStorage(location=temp_storage_location)
class BoundaryModel(models.Model):
positive_integer = models.PositiveIntegerField(null=True, blank=True)
+callable_default_value = 0
+def callable_default():
+ global callable_default_value
+ callable_default_value = callable_default_value + 1
+ return callable_default_value
+
class Defaults(models.Model):
name = models.CharField(max_length=255, default='class default value')
def_date = models.DateField(default = datetime.date(1980, 1, 1))
value = models.IntegerField(default=42)
+ callable_default = models.IntegerField(default=callable_default)
class ChoiceModel(models.Model):
"""For ModelChoiceField and ModelMultipleChoiceField tests."""
@@ -112,6 +119,10 @@ u'class default value'
datetime.date(1980, 1, 1)
>>> DefaultsForm().fields['value'].initial
42
+>>> r1 = DefaultsForm()['callable_default'].as_widget()
+>>> r2 = DefaultsForm()['callable_default'].as_widget()
+>>> r1 == r2
+False
In a ModelForm that is passed an instance, the initial values come from the
instance's values, not the model's defaults.
@@ -129,7 +140,7 @@ datetime.date(1969, 4, 4)
... name = CharField(max_length=255)
... class Meta:
... model = Defaults
-... exclude = ['name']
+... exclude = ['name', 'callable_default']
>>> f = ExcludingForm({'name': u'Hello', 'value': 99, 'def_date': datetime.date(1999, 3, 2)})
>>> f.is_valid()
True