def check_test(v): return not ( v is False or v is None or v == '' or v == '0' ) class CheckBoxInput(forms.CheckboxInput): def __init__(self, attrs=None, check_test=None): if check_test is None: check_test = check_test return super(CheckBoxInput, self).__init__(attrs, check_test) class BooleanField(forms.BooleanField): ''' BooleanField that treats '0' as unchecked. ''' widget = CheckBoxInput