Skip to content

Boolean setting with initial value set to False is breaking the system #13

Description

@munhitsu

It seems that either "val.initial = val.clean(val.initial)" is django overuse or there is an issue with django since quite long for BooleanField.
Meanwhile it might be useful not to use val.clean for BooleanField.

class BooleanField(Field):
widget = CheckboxInput

def to_python(self, value):
    """Returns a Python boolean object."""
    # Explicitly check for the string 'False', which is what a hidden field
    # will submit for False. Also check for '0', since this is what
    # RadioSelect will provide. Because bool("True") == bool('1') == True,
    # we don't need to handle that explicitly.
    if value in ('False', '0'):
        value = False
    else:
        value = bool(value)
    value = super(BooleanField, self).to_python(value)
    if not value and self.required:
        raise ValidationError(self.error_messages['required'])
    return value

To reproduce issue create appsettings group:
@register
class Offer:
as_download = False

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions