summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2007-09-15 02:37:07 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2007-09-15 02:37:07 +0000
commitcf3c94b26dc76ee5493c206d64f5095b994afd63 (patch)
treea956db0e8e926622633ffb239efd50e551385840
parentce53de47a2702f9b09ff9363929057736660567b (diff)
Fixed #4415 -- Added formfield method to PositiveIntegerField, so that those fields get validated correctly. Thanks, Oggie Rob.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@6252 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/db/models/fields/__init__.py10
-rw-r--r--tests/regressiontests/forms/models.py21
2 files changed, 31 insertions, 0 deletions
diff --git a/django/db/models/fields/__init__.py b/django/db/models/fields/__init__.py
index 7986a4284a..7a4c15c3c1 100644
--- a/django/db/models/fields/__init__.py
+++ b/django/db/models/fields/__init__.py
@@ -912,11 +912,21 @@ class PhoneNumberField(IntegerField):
class PositiveIntegerField(IntegerField):
def get_manipulator_field_objs(self):
return [oldforms.PositiveIntegerField]
+
+ def formfield(self, **kwargs):
+ defaults = {'min_value': 0}
+ defaults.update(kwargs)
+ return super(PositiveIntegerField, self).formfield(**defaults)
class PositiveSmallIntegerField(IntegerField):
def get_manipulator_field_objs(self):
return [oldforms.PositiveSmallIntegerField]
+ def formfield(self, **kwargs):
+ defaults = {'min_value': 0}
+ defaults.update(kwargs)
+ return super(PositiveSmallIntegerField, self).formfield(**defaults)
+
class SlugField(CharField):
def __init__(self, *args, **kwargs):
kwargs['max_length'] = kwargs.get('max_length', 50)
diff --git a/tests/regressiontests/forms/models.py b/tests/regressiontests/forms/models.py
index e69de29bb2..f4f8607193 100644
--- a/tests/regressiontests/forms/models.py
+++ b/tests/regressiontests/forms/models.py
@@ -0,0 +1,21 @@
+from django.db import models
+
+class BoundaryModel(models.Model):
+ positive_integer = models.PositiveIntegerField(null=True, blank=True)
+
+__test__ = {'API_TESTS': """
+>>> from django.newforms import form_for_model
+
+# Boundary conditions on a PostitiveIntegerField #########################
+>>> BoundaryForm = form_for_model(BoundaryModel)
+>>> f = BoundaryForm({'positive_integer':100})
+>>> f.is_valid()
+True
+>>> f = BoundaryForm({'positive_integer':0})
+>>> f.is_valid()
+True
+>>> f = BoundaryForm({'positive_integer':-100})
+>>> f.is_valid()
+False
+
+"""} \ No newline at end of file