Skip to content

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

@munhitsu

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

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