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.
