backend/django

Django: add attrs to django form

seul chan 2018. 7. 22. 16:59

1. add attrs in widget

number = forms.CharField(widget=forms.TextInput(attrs={'autocomplete': 'off', 'type': 'number'}))

2. use __init__

class YourModelForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(YourModelForm, self).__init__(*args, **kwargs)
        self.fields['number'].widget.attrs.update({
            'autocomplete': 'off',
            'type': 'number',
        })

3. use Meta

class YourModelForm(ModelForm):
    class Meta:
        model = YourModel
        fields = ('number', 'title', 'birth_date')
        widgets = {
            'number': Textarea(attrs={'autocomplete': 'off', 'type': 'number'}),
        }

4. django-widget-tweaks

{% load widget_tweaks %}
...
<div class="field">
   {{ form.number|attr:"autocomplete:off"|add_class:"my_css_class" }}
</div>