У меня есть поле ввода, которое отображается с таким шаблоном:
<div class="field">
{{ form.city }}
</div>
Что отображается как:
<div class="field">
<input id="id_city" type="text" name="city" maxlength="100" />
</div>
Теперь предположим, что я хочу добавить атрибут autocomplete = "off" к отображаемому элементу ввода, как бы я это сделал? Или onclick = "xyz()" или class= "my-special-css-class"?
city = forms.CharField(widget=forms.TextInput(attrs={'autocomplete':'off'}))
Извините за рекламу, но я недавно выпустил приложение (https://github.com/kmike/django-widget-tweaks), что делает такие задачи еще менее болезненными, поэтому дизайнеры могут это сделать, не касаясь кода на Python
{% load widget_tweaks %}
...
<div class="field">
{{ form.city|attr:"autocomplete:off"|add_class:"my_css_class" }}
</div>
или, альтернативно,
{% load widget_tweaks %}
...
<div class="field">
{% render_field form.city autocomplete="off" class+="my_css_class" %}
</div>
Если вы используете "ModelForm":
class YourModelForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(YourModelForm, self).__init__(*args, **kwargs)
self.fields['city'].widget.attrs.update({
'autocomplete': 'off'
})
Если вы используете ModelForm
, помимо возможности использования __init__
в качестве @Artificioo, предоставленного в его ответе, есть словарь widgets
в Meta:
class AuthorForm(ModelForm):
class Meta:
model = Author
fields = ('name', 'title', 'birth_date')
widgets = {
'name': Textarea(attrs={'cols': 80, 'rows': 20}),
}