- 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
- RequiredNullBooleanField by wwu.housing 6 years, 6 months ago
- RelatedNullFilterSpec: django-admin custom filter all/null/not null/choices by Codeko 5 years ago
- Improved Pickled Object Field by taavi223 6 years, 1 month ago
- render_markup filter, specify the markup filter as a string by exogen 8 years, 6 months ago
- Custom model field for mysql time type. by xuqingkuang 5 years, 11 months ago