Атрибут initial
Атрибут initial применяется к классу Form и позволяет
задать начальные значения для полей формы. Эти значения
будут отображаться в полях ввода при первой загрузке
страницы, до того как пользователь отправит данные.
Атрибут представляет собой словарь, где ключами являются
имена полей, а значениями - начальные данные. Это
удобно для предзаполнения формы значениями по умолчанию
или данными из базы данных.
Синтаксис
class MyForm(forms.Form):
field_name = forms.FieldType()
class Meta:
initial = {
'field_name': 'value',
}
Атрибут initial можно также передавать
непосредственно в конструктор формы при создании
экземпляра:
form = MyForm(initial={'field_name': 'value'})
Пример
Давайте создадим форму для регистрации пользователя с начальными значениями:
from django import forms
class RegistrationForm(forms.Form):
username = forms.CharField(max_length=100)
email = forms.EmailField()
age = forms.IntegerField()
class Meta:
initial = {
'username': 'guest',
'email': 'guest@example.com',
'age': 18,
}
Создадим экземпляр формы и выведем начальные значения:
form = RegistrationForm()
print(form.initial)
Результат выполнения кода:
{'username': 'guest', 'email': 'guest@example.com', 'age': 18}
Пример
Давайте передадим начальные значения в конструктор формы для конкретного пользователя:
from django import forms
class ProfileForm(forms.Form):
first_name = forms.CharField(max_length=50)
last_name = forms.CharField(max_length=50)
birth_date = forms.DateField()
user_data = {
'first_name': 'John',
'last_name': 'Doe',
'birth_date': '1990-05-15',
}
form = ProfileForm(initial=user_data)
print(form.initial)
Результат выполнения кода:
{'first_name': 'John', 'last_name': 'Doe', 'birth_date': '1990-05-15'}
Пример
Атрибут initial также можно использовать
вместе с ModelForm для предзаполнения
значениями из существующей записи базы данных:
from django import forms
from myapp.models import User
class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ['username', 'email', 'age']
user = User.objects.get(id=1)
form = UserForm(initial={
'username': user.username,
'email': user.email,
'age': user.age,
})
print(form.initial)
Результат выполнения кода:
{'username': 'john_doe', 'email': 'john@example.com', 'age': 30}
Пример
Давайте создадим форму с динамическими начальными значениями на основе текущей даты:
from django import forms
from datetime import date
class OrderForm(forms.Form):
product = forms.CharField(max_length=100)
quantity = forms.IntegerField()
order_date = forms.DateField()
today = date.today()
form = OrderForm(initial={
'product': 'Laptop',
'quantity': 1,
'order_date': today,
})
print(form.initial['product'])
print(form.initial['order_date'])
Результат выполнения кода:
"Laptop"
"2026-09-07"
Смотрите также
-
метод
is_valid,
который валидирует данные формы -
атрибут
cleaned_data,
который содержит очищенные и проверенные данные формы -
атрибут
instance,
который связывает форму с объектом модели -
метод
save,
который сохраняет данные формы в базу данных