class MyForm(Form):
real = BooleanField()
If MyForm(data={'real': 'on'}), I want to render <input type="checkbox" checked=checked data-initial='on'>.
If MyForm(data={}), I want to render <input type="checkbox">.
How to achieve this?
CodePudding user response:
You need to overwrite init of MyForm class:
from django import forms
class MyForm(forms.Form):
real = forms.BooleanField()
def __init__(self, *args, **kwargs):
data = kwargs.pop('data')
super(MyForm, self).__init__(*args, **kwargs)
if data != {} and 'real' in data:
self.fields['real'] = forms.BooleanField(initial=True, widget=forms.CheckboxInput(attrs={'data-initial': data['real']}))
so if real is passed as key in data dict it will make real field initialy True (checked) and value will be pass to data-initial attr.
