Home > Enterprise >  Django add Attributes to Boolean model form
Django add Attributes to Boolean model form

Time:02-01

My Model Form looks like this:

class ToggleSettingsForm(forms.ModelForm):
    class Meta:
        model = ToggleSettings

        fields = (
            'background',
        )

        widgets = {
            'background': forms.BooleanField(widget=forms.CheckboxInput(attrs={'type': 'checkbox', 'class': 'checkbox', 'id': 'your_id'}))
        }

And I get this error in the template

AttributeErro

'BooleanField' object has no attribute 'is_hidden'

Request Method:     GET
Request URL:    http://localhost:8000/auth/dashboard/
Django Version:     4.0.1
Exception Type:     AttributeError

But I need a Boolean Field (checkbox) with an ID, as well as classes.

How else would I give a Boolean Field of a Model Form ID's and classes?

To add Attributes to a BooleanField I tried it with this post: How to assign id attribute to BooleanField in ModelForm for jsonresponse

EDIT: \\models.py

class ToggleSettings(models.Model):
    user = models.OneToOneField(
        settings.AUTH_USER_MODEL,
        default=None,
        null=True,
        on_delete=models.CASCADE,
    )
    background = models.BooleanField(default=True)

\\views.py

    try:
        toggle_settings = request.user.togglesettings
    except ToggleSettings.DoesNotExist:
        toggle_settings = ToggleSettings(user=request.user)

    if request.method == 'POST':
        togglesettings_form = ToggleSettingsForm(
            request.POST, instance=toggle_settings)


        if togglesettings_form.is_valid():
            togglesettings_form.save()
            return redirect('/')

 
    else:

        togglesettings_form = ToggleSettingsForm()

CodePudding user response:

your form should be as this:

class ToggleSettingsForm(forms.ModelForm):
    class Meta:
        model = ToggleSettings

        fields = (
            'background',
        )

        widgets = {
            'background': forms.CheckboxInput(attrs={ 'class': 'checkbox', 'id': 'your_id'}))
        }

take a look at documentions

CodePudding user response:

Django BooleanField[Django-doc] is not a widget but FormField so change your forms.py as

class ToggleSettingsForm(forms.ModelForm):
    class Meta:
        model = ToggleSettings

        fields = (
            'background',
        )

        widgets = {
            'background': forms.CheckboxInput(attrs={'type': 'checkbox', 'class': 'checkbox', 'id': 'your_id'})
        }

You can see Built-in widgets[Django Doc] for more details.

  •  Tags:  
  • Related