РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
3 of 818 menu

Поле IntegerField

Поле IntegerField применяется в моделях Django для хранения целочисленных значений. Это одно из наиболее часто используемых числовых полей. При создании модели поле преобразуется в столбец базы данных с типом INTEGER (или эквивалентным в зависимости от используемой СУБД). Поле принимает значения в диапазоне от -2147483648 до 2147483647. Для работы с большими числами следует использовать BigIntegerField, а для хранения только положительных чисел - PositiveIntegerField.

Синтаксис

from django.db import models class MyModel(models.Model): my_field = models.IntegerField(**options)

Параметры, которые можно передать в поле IntegerField:

  • null - определяет, может ли поле хранить значение NULL (по умолчанию False);
  • blank - определяет, может ли поле быть пустым в формах (по умолчанию False);
  • default - значение по умолчанию для поля;
  • choices - кортеж вариантов для выбора;
  • validators - список валидаторов для проверки значения;
  • db_column - имя столбца в базе данных;
  • db_index - создает индекс для поля (по умолчанию False);
  • primary_key - делает поле первичным ключом (по умолчанию False);
  • editable - определяет, можно ли редактировать поле через админку (по умолчанию True);
  • help_text - текст подсказки для поля.

Пример . Определение модели

Рассмотрим модель Product с полем IntegerField для хранения количества товара на складе:

from django.db import models class Product(models.Model): name = models.CharField(max_length=100) price = models.DecimalField(max_digits=10, decimal_places=2) stock = models.IntegerField(default=0) minimum_stock = models.IntegerField(default=10) def __str__(self): return self.name

Создание и сохранение объектов

Создадим продукт и сохраним его в базе данных:

from myapp.models import Product # Create a new product product = Product( name="Laptop", price=999.99, stock=50, minimum_stock=10 ) product.save() print(product.stock)

Результат выполнения кода:

"50"

Выборка по числовому значению

Отфильтруем продукты, у которых количество на складе меньше минимального порога:

from myapp.models import Product low_stock = Product.objects.filter(stock__lt=models.F('minimum_stock')) for product in low_stock: print(f"{product.name}: {product.stock}")

Результат выполнения кода:

"Laptop: 50" "Monitor: 5"

Обновление числовых значений

Используем метод update для увеличения количества товара на складе:

from myapp.models import Product from django.db.models import F # Increase stock by 10 for all products updated = Product.objects.update(stock=F('stock') + 10) print(f"Updated {updated} products") # Show first product stock product = Product.objects.first() print(product.stock)

Результат выполнения кода:

"Updated 3 products" "60"

Использование с агрегацией

Вычислим общее количество товаров на складе с помощью агрегации:

from myapp.models import Product from django.db.models import Sum total_stock = Product.objects.aggregate(total=Sum('stock')) print(total_stock)

Результат выполнения кода:

"{'total': 180}"

Использование choices

Определим модель Order с полем status, использующим choices:

from django.db import models class Order(models.Model): STATUS_CHOICES = [ (1, 'Pending'), (2, 'Processing'), (3, 'Shipped'), (4, 'Delivered'), (5, 'Cancelled'), ] product = models.CharField(max_length=100) quantity = models.IntegerField() status = models.IntegerField(choices=STATUS_CHOICES, default=1) def __str__(self): return f"{self.product} - {self.get_status_display()}"

Создадим заказ и выведем его статус:

from myapp.models import Order order = Order.objects.create( product="Phone", quantity=2, status=3 ) print(order.status) print(order.get_status_display())

Результат выполнения кода:

"3" "Shipped"

Валидация значений

Django автоматически проверяет, что значение находится в допустимом диапазоне. При попытке сохранить число вне диапазона будет вызвано исключение:

from myapp.models import Order from django.core.exceptions import ValidationError try: order = Order( product="Test", quantity=5, status=10 # Invalid choice ) order.full_clean() order.save() except ValidationError as e: print(f"Validation error: {e}")

Результат выполнения кода:

"Validation error: {'status': ['Value 10 is not a valid choice.']}"

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

  • поле BigIntegerField,
    которое хранит числа в диапазоне от -9223372036854775808 до 9223372036854775807
  • поле PositiveIntegerField,
    которое хранит только положительные целые числа
  • поле SmallIntegerField,
    которое хранит числа в диапазоне от -32768 до 32767
  • поле FloatField,
    которое хранит числа с плавающей точкой
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить