IntegerField
Поле IntegerField в Django формах предназначено для
обработки целочисленных данных. Оно автоматически преобразует
входные данные в целое число и выполняет валидацию, проверяя
что введенное значение является допустимым целым числом.
Поле принимает необязательные параметры для ограничения
диапазона значений: min_value и max_value,
а также стандартные параметры форм, такие как required,
label, initial и другие.
Синтаксис
from django import forms
class MyForm(forms.Form):
field_name = forms.IntegerField(
min_value=0,
max_value=100,
required=True,
label="Number",
initial=0,
)
Пример
Создадим простую форму для ввода возраста пользователя с ограничением от 0 до 150:
from django import forms
class AgeForm(forms.Form):
age = forms.IntegerField(
min_value=0,
max_value=150,
label="Your age",
help_text="Enter your age (0-150)",
)
Результат создания экземпляра формы:
form = AgeForm()
print(form.as_p())
Результат выполнения кода:
"<p><label for="id_age">Your age:</label> <input type="number" name="age" min="0" max="150" required id="id_age"></p>"
Пример
Рассмотрим обработку данных из формы с валидацией поля:
from django import forms
class ProductForm(forms.Form):
price = forms.IntegerField(
min_value=1,
max_value=1000000,
label="Price in cents",
required=True,
)
quantity = forms.IntegerField(
min_value=1,
max_value=1000,
label="Quantity",
initial=1,
)
def clean_price(self):
price = self.cleaned_data.get('price')
if price < 0:
raise forms.ValidationError("Price cannot be negative")
return price
Пример обработки валидных и невалидных данных:
# Valid data
form = ProductForm({'price': '500', 'quantity': '10'})
if form.is_valid():
print("Valid form data:")
print(f"Price: {form.cleaned_data['price']}")
print(f"Quantity: {form.cleaned_data['quantity']}")
# Invalid data (price too high)
form = ProductForm({'price': '9999999', 'quantity': '5'})
print(f"Is form valid? {form.is_valid()}")
print(f"Errors: {form.errors}")
Результат выполнения кода:
"Valid form data:"
"Price: 500"
"Quantity: 10"
"Is form valid? False"
"Errors: {'price': ['Ensure this value is less than or equal to 1000000.']}"
Пример
Использование IntegerField с моделью через ModelForm:
from django.db import models
from django import forms
class Book(models.Model):
title = models.CharField(max_length=200)
pages = models.IntegerField()
published_year = models.IntegerField()
def __str__(self):
return self.title
class BookForm(forms.ModelForm):
class Meta:
model = Book
fields = ['title', 'pages', 'published_year']
widgets = {
'pages': forms.NumberInput(attrs={'min': 1, 'max': 5000}),
'published_year': forms.NumberInput(attrs={'min': 1900, 'max': 2026}),
}
Пример создания и сохранения объекта модели через форму:
# Create form with valid data
form_data = {
'title': 'Django Handbook',
'pages': '500',
'published_year': '2024',
}
form = BookForm(form_data)
if form.is_valid():
book = form.save()
print(f"Book created: {book.title}")
print(f"Pages: {book.pages}")
print(f"Year: {book.published_year}")
# Try invalid data (negative pages)
invalid_form = BookForm({'title': 'Invalid Book', 'pages': '-10', 'published_year': '2025'})
if not invalid_form.is_valid():
print(f"Invalid form errors: {invalid_form.errors}")
Результат выполнения кода:
"Book created: Django Handbook"
"Pages: 500"
"Year: 2024"
"Invalid form errors: {'pages': ['Ensure this value is greater than or equal to 1.']}"
Смотрите также
-
поле
FloatField,
которое используется для чисел с плавающей точкой -
поле
DecimalField,
которое используется для десятичных чисел с фиксированной точностью -
поле
ChoiceField,
которое используется для выбора из предопределенного списка значений -
метод
is_valid,
который проверяет валидность данных формы