summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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