Author: jacob
Date: 2009-04-09 10:09:35 -0500 (Thu, 09 Apr 2009)
New Revision: 10456

Modified:
   django/trunk/django/core/management/validation.py
   django/trunk/tests/modeltests/invalid_models/models.py
   django/trunk/tests/regressiontests/serializers_regress/models.py
Log:
Fixed #5563: `BooleanField(null=True)` now raises a validation warning telling 
users to use `NullBooleanField` instead. Thanks, SamBull.

Modified: django/trunk/django/core/management/validation.py
===================================================================
--- django/trunk/django/core/management/validation.py   2009-04-09 15:03:31 UTC 
(rev 10455)
+++ django/trunk/django/core/management/validation.py   2009-04-09 15:09:35 UTC 
(rev 10456)
@@ -51,6 +51,8 @@
                     from PIL import Image
                 except ImportError:
                     e.add(opts, '"%s": To use ImageFields, you need to install 
the Python Imaging Library. Get it at http://www.pythonware.com/products/pil/ 
.' % f.name)
+            if isinstance(f, models.BooleanField) and getattr(f, 'null', 
False):
+                e.add(opts, '"%s": BooleanFields do not accept null values. 
Use a NullBooleanField instead.' % f.name)
             if f.choices:
                 if isinstance(f.choices, basestring) or not 
is_iterable(f.choices):
                     e.add(opts, '"%s": "choices" should be iterable (e.g., a 
tuple or list).' % f.name)

Modified: django/trunk/tests/modeltests/invalid_models/models.py
===================================================================
--- django/trunk/tests/modeltests/invalid_models/models.py      2009-04-09 
15:03:31 UTC (rev 10455)
+++ django/trunk/tests/modeltests/invalid_models/models.py      2009-04-09 
15:09:35 UTC (rev 10456)
@@ -14,6 +14,7 @@
     choices2 = models.CharField(max_length=10, choices=[(1,2,3),(1,2,3)])
     index = models.CharField(max_length=10, db_index='bad')
     field_ = models.CharField(max_length=10)
+    nullbool = models.BooleanField(null=True)
 
 class Target(models.Model):
     tgt_safe = models.CharField(max_length=10)
@@ -190,6 +191,7 @@
 invalid_models.fielderrors: "choices2": "choices" should be a sequence of 
two-tuples.
 invalid_models.fielderrors: "index": "db_index" should be either None, True or 
False.
 invalid_models.fielderrors: "field_": Field names cannot end with underscores, 
because this would lead to ambiguous queryset filters.
+invalid_models.fielderrors: "nullbool": BooleanFields do not accept null 
values. Use a NullBooleanField instead.
 invalid_models.clash1: Accessor for field 'foreign' clashes with field 
'Target.clash1_set'. Add a related_name argument to the definition for 
'foreign'.
 invalid_models.clash1: Accessor for field 'foreign' clashes with related m2m 
field 'Target.clash1_set'. Add a related_name argument to the definition for 
'foreign'.
 invalid_models.clash1: Reverse query name for field 'foreign' clashes with 
field 'Target.clash1'. Add a related_name argument to the definition for 
'foreign'.

Modified: django/trunk/tests/regressiontests/serializers_regress/models.py
===================================================================
--- django/trunk/tests/regressiontests/serializers_regress/models.py    
2009-04-09 15:03:31 UTC (rev 10455)
+++ django/trunk/tests/regressiontests/serializers_regress/models.py    
2009-04-09 15:09:35 UTC (rev 10456)
@@ -11,10 +11,10 @@
 from django.contrib.localflavor.us.models import USStateField, PhoneNumberField
 
 # The following classes are for testing basic data
-# marshalling, including NULL values.
+# marshalling, including NULL values, where allowed.
 
 class BooleanData(models.Model):
-    data = models.BooleanField(null=True)
+    data = models.BooleanField()
 
 class CharData(models.Model):
     data = models.CharField(max_length=30, null=True)


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-updates@googlegroups.com
To unsubscribe from this group, send email to 
django-updates+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to