Атрибут fields

Атрибут fields используется для указания порядка полей при рендеринге формы. По умолчанию поля отображаются в том порядке, в котором они объявлены в классе формы. Однако с помощью атрибута fields можно явно задать последовательность полей, а также включить или исключить определенные поля из отображения.

Синтаксис

pythonclass MyForm(forms.Form):
  field1 = forms.CharField()
  field2 = forms.CharField()
  field3 = forms.CharField()
  
  fields = ['field2', 'field1', 'field3']

Пример

Создадим форму регистрации с тремя полями и зададим порядок их отображения с помощью атрибута fields:

pythonfrom django import forms

class RegistrationForm(forms.Form):
  password = forms.CharField(widget=forms.PasswordInput)
  email = forms.EmailField()
  username = forms.CharField(max_length=100)

  fields = ['username', 'email', 'password']

Результат отображения полей в указанном порядке:

python"Порядок полей: username, email, password"

Пример

Используем атрибут fields для исключения поля из отображения. Для этого просто не включаем его в список:

pythonfrom django import forms

class UserProfileForm(forms.Form):
  first_name = forms.CharField(max_length=50)
  last_name = forms.CharField(max_length=50)
  email = forms.EmailField()
  password = forms.CharField(widget=forms.PasswordInput)
  confirm_password = forms.CharField(widget=forms.PasswordInput)

  fields = ['first_name', 'last_name', 'email']

В результате поля password и confirm_password не будут отображаться при рендеринге формы:

python"Отображаются поля: first_name, last_name, email"

Пример

Используем fields для сортировки полей в алфавитном порядке независимо от объявления:

pythonfrom django import forms

class ContactForm(forms.Form):
  message = forms.CharField(widget=forms.Textarea)
  subject = forms.CharField(max_length=200)
  sender = forms.EmailField()
  cc_myself = forms.BooleanField(required=False)

  fields = ['cc_myself', 'message', 'sender', 'subject']

Поля будут отображаться в следующем порядке:

python"Порядок полей: cc_myself, message, sender, subject"

Смотрите также

  • класс Form,
    базовый класс для создания форм
  • метод is_valid,
    выполняет валидацию данных формы
  • атрибут cleaned_data,
    содержит проверенные и очищенные данные формы
  • атрибут errors,
    содержит ошибки валидации формы