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 -~----------~----~----~----~------~----~------~--~---