Forms¶
Overwrite only the widget of a modelform
class MyForm2(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(MyForm2, self).__init__(*args, **kwargs)
self.fields['myfield1'].required = True
self.fields[‘myfield1’].widget = forms.Textarea(attrs {‘class’:’myclass’,})
class Meta:
model = models.MyModel
Custom error message
class MyForm2(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(MyForm2, self).__init__(*args, **kwargs)
self.fields['rating'].error_messages['required'] = 'I require that you fill out this field'
Custom validator
def clean_myfield(self):
if self.cleaned_data["myfield"] < 10:
raise forms.ValidationError("MyField must be greater than 10")
return self.cleaned_data["myfield"]
Loop over all form fields
{% for field in form %}
{{ field.label_tag }} {{ field }}
{% endfor %}
Display form value without None
{{ form.field.value|default_if_none:"" }}
Request if a field is required
{% if form.field_name.field.required %}
Display error without li-tags
{{ field.errors|striptags }}
Create Form from Model with https://github.com/bradleyayers/django-tables2/