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 }}