djangodocs.org

706 sections in Django 6.0 Search all versions →

Reference The Forms API

Form.fields You can access the fields of Form instance from its fields attribute: You can alter the field and BoundField of Form instance to change the way it is presented in the form: Beware not to alter the base_fields attribute …

Topic guide Creating forms from models Inline formsets

inlineformset_factory uses modelformset_factory and passes most of its arguments to modelformset_factory. This means you can use the widgets parameter in much the same way as passing it to modelformset_factory. See Specifying widgets to use in the form with widgets above.

label

Reference Form fields Core field arguments

Field.label The label argument lets you specify the “human-friendly” label for this field. This is used when the Field is displayed in a Form.

label_suffix

Reference Form fields Core field arguments

Field.label_suffix The label_suffix argument lets you override the form’s label_suffix on a per-field basis:

help_text

Reference Form fields Core field arguments

If you provide help_text, it will be displayed next to the Field when the Field is rendered by one of the convenience Form methods (e.g., as_ul()). Like the model field’s help_text, this value isn’t HTML-escaped in automatically-generated forms.

localize

Reference Form fields Core field arguments

Field.localize The localize argument enables the localization of form data input, as well as the rendered output. See the format localization documentation for more information.

disabled

Reference Form fields Core field arguments

Field.disabled The disabled boolean argument, when set to True, disables a form field using the disabled HTML attribute so that it won’t be editable by users.

bound_field_class

Reference Form fields Core field arguments

Field.bound_field_class New in Django 5.2. The bound_field_class attribute allows a per-field override of Form.bound_field_class.

has_changed()

Reference Form fields Checking if the field data has changed

Field.has_changed()[source] The has_changed() method is used to determine if the field value has changed from the initial value. Returns True or False. See the Form.has_changed documentation for more information.

ChoiceField

Reference Form fields Built-in Field classes

classChoiceField(**kwargs)[source] : - Default widget: Select - Empty value: '' (an empty string) - Normalizes to: A string. - Validates that the given value exists in the list of choices. - Error message keys: required, invalid_choice

ModelChoiceField

Reference Form fields Fields which handle relationships

classModelChoiceField(**kwargs)[source] : - Default widget: Select - Empty value: None - Normalizes to: A model instance. - Validates that the given id exists in the queryset. - Error message keys: required, invalid_choice

Creating custom fields

Reference Form fields

To do this, create a subclass of django.forms.Field. Its only requirements are that it implement a clean() method and that its __init__() method accept the core arguments mentioned above (required, label, initial, widget, help_text).

Basic forms

Topic guide Form handling with class-based views

Given a contact form: forms.py The view can be constructed using a FormView: views.py Notes: FormView inherits TemplateResponseMixin so template_name can be used here. The default implementation for form_valid() simply redirects to the success_url.

Model forms

Topic guide Form handling with class-based views

In this example: CreateView and UpdateView use myapp/author_form.html DeleteView uses myapp/author_confirm_delete.html If you wish to have separate templates for CreateView and > UpdateView, you can set either > template_name or > template_name_suffix > on your view class.