- December 8, 2009
- null field custom-field none
- 0 (after 0 ratings)
This custom model field is a variant of NullBooleanField, that stores only True and None (NULL) values. False is stored as NULL.
It's usefull for special purposes like unique/unique_together.
One small problem is here, that False is not lookuped as None.
This snippets is a response to 1830
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
from django.db.models.fields import subclassing from django.core import exceptions from django.conf import settings from django.db import models class TrueNoneField(models.NullBooleanField): __metaclass__ = subclassing.SubfieldBase def db_type(self): if 'postgresql' in settings.DATABASE_ENGINE: return "boolean CHECK (%s <> false)" % self.get_attname_column() else: return super(TrueNoneField, self).db_type() def to_python(self, value): if value in (True, 1): return True elif value in (False, 0, None): return None raise exceptions.ValidationError("This value must be either True or None.") def get_db_prep_save(self, value): return super(TrueNoneField, self).get_db_prep_save(self.to_python(value))
More like this
- Serialize a model instance by chriswedgwood 1 week, 2 days ago
- Automatically setup raw_id_fields ForeignKey & OneToOneField by agusmakmun 9 months, 1 week ago
- Crispy Form by sourabhsinha396 10 months ago
- ReadOnlySelect by mkoistinen 10 months, 2 weeks ago
- Verify events sent to your webhook endpoints by santos22 11 months, 2 weeks ago