diff --git a/src/django_fields/fields.py b/src/django_fields/fields.py index c7c97b9..834c580 100644 --- a/src/django_fields/fields.py +++ b/src/django_fields/fields.py @@ -58,7 +58,6 @@ def _get_padding(self, value): mod = (len(value) + 2) % self.cipher.block_size return self.cipher.block_size - mod + 2 - def to_python(self, value): if self._is_encrypted(value): return force_unicode( @@ -69,6 +68,9 @@ def to_python(self, value): return value def get_db_prep_value(self, value, connection=None, prepared=False): + if value is None: + return None + value = smart_str(value) if value is not None and not self._is_encrypted(value): @@ -192,15 +194,17 @@ def get_internal_type(self): def to_python(self, value): # value is either an int or a string of an integer - if isinstance(value, self.number_type): + if isinstance(value, self.number_type) or value is None: number = value else: number_text = super(BaseEncryptedNumberField, self).to_python(value) number = self.number_type(number_text) return number - # def get_prep_value(self, value): def get_db_prep_value(self, value, connection=None, prepared=False): + if value is None: + return None + number_text = self.format_string % value return super(BaseEncryptedNumberField, self).get_db_prep_value( number_text,