Ticket #8101: 8101_boolean_fields_fix.diff

File 8101_boolean_fields_fix.diff, 1.8 KB (added by brosner, 7 years ago)
  • django/db/models/fields/__init__.py

     
    505505    def get_db_prep_value(self, value):
    506506        if value is None:
    507507            return None
    508         return bool(value)
     508        return self.to_python(value)
    509509
    510510    def get_manipulator_field_objs(self):
    511511        return [oldforms.CheckboxField]
     
    10151015    def get_db_prep_value(self, value):
    10161016        if value is None:
    10171017            return None
    1018         return bool(value)
     1018        return self.to_python(value)
    10191019
    10201020    def get_manipulator_field_objs(self):
    10211021        return [oldforms.NullBooleanField]
  • tests/regressiontests/model_fields/tests.py

     
    55... except ImportError:
    66...     from django.utils._decimal import Decimal
    77
     8# BooleanField
     9
     10>>> f = BooleanField()
     11>>> f.to_python(True)
     12True
     13>>> f.to_python(False)
     14False
     15>>> f.to_python(u'1')
     16True
     17>>> f.to_python(u'0')
     18False
     19>>> f.to_python(None)
     20Traceback (most recent call last):
     21...
     22ValidationError: [u'This value must be either True or False.']
     23
     24>>> f.get_db_prep_value(None)
     25>>> f.get_db_prep_value(u'1')
     26True
     27>>> f.get_db_prep_value(u'0')
     28False
     29
     30# NullBooleanField
     31>>> f = NullBooleanField()
     32>>> f.to_python(True)
     33True
     34>>> f.to_python(False)
     35False
     36>>> f.to_python(u'1')
     37True
     38>>> f.to_python(u'0')
     39False
     40>>> f.to_python(None)
     41
     42>>> f.get_db_prep_value(None)
     43>>> f.get_db_prep_value(u'1')
     44True
     45>>> f.get_db_prep_value(u'0')
     46False
     47
    848# DecimalField
    949
    1050>>> f = DecimalField(max_digits=4, decimal_places=2)
Back to Top