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

Поле SmallIntegerField

Поле SmallIntegerField в Django представляет собой целочисленное поле, которое в базе данных хранится как тип SMALLINT. Оно поддерживает значения в диапазоне от -32768 до 32767 (для PostgreSQL, MySQL, SQLite). Данное поле является оптимальным выбором для данных с небольшим диапазоном значений, таких как возраст, рейтинг или количество товаров на складе, экономя место в базе данных по сравнению с IntegerField. Поле поддерживает стандартные параметры валидации: max_value и min_value для ограничения допустимого диапазона, а также null, blank и default для управления значениями.

Синтаксис

from django.db import models field_name = models.SmallIntegerField( **options )

Пример

Создадим модель Book с полями для хранения года издания и количества страниц:

from django.db import models class Book(models.Model): title = models.CharField(max_length=200) pages = models.SmallIntegerField( verbose_name="Pages", default=0, help_text="Number of pages in the book" ) year = models.SmallIntegerField( verbose_name="Publication year", max_value=2026, min_value=1000 ) def __str__(self): return self.title

Пример

Создадим несколько записей с использованием поля SmallIntegerField:

from myapp.models import Book # Create books book1 = Book.objects.create( title="Django for Beginners", pages=350, year=2023 ) book2 = Book.objects.create( title="Advanced Python", pages=450, year=2022 ) book3 = Book.objects.create( title="Web Development", pages=280, year=2021 ) # Retrieve all books for book in Book.objects.all(): print(f"{book.title}: {book.pages} pages, {book.year}")

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

"Django for Beginners: 350 pages, 2023" "Advanced Python: 450 pages, 2022" "Web Development: 280 pages, 2021"

Пример

Выполним фильтрацию записей с использованием операторов сравнения для поля SmallIntegerField:

from myapp.models import Book # Books with more than 300 pages large_books = Book.objects.filter(pages__gt=300) for book in large_books: print(book.title) # Books published after 2022 recent_books = Book.objects.filter(year__gt=2022) for book in recent_books: print(book.title)

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

"Django for Beginners" "Advanced Python" "Django for Beginners"

Пример

Обновим значения полей с использованием агрегации и выражений F:

from myapp.models import Book from django.db.models import F, Avg # Increase pages by 10 for all books Book.objects.update(pages=F('pages') + 10) # Calculate average pages avg_pages = Book.objects.aggregate(Avg('pages')) print(f"Average pages: {avg_pages['pages__avg']}") # Verify updated values for book in Book.objects.all(): print(f"{book.title}: {book.pages} pages")

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

"Average pages: 363.3333333333333" "Django for Beginners: 360 pages" "Advanced Python: 460 pages" "Web Development: 290 pages"

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

  • поле IntegerField,
    которое хранит целые числа большего диапазона
  • поле PositiveSmallIntegerField,
    которое хранит только положительные малые целые числа
  • поле BigIntegerField,
    которое хранит целые числа очень большого диапазона
  • поле SmallAutoField,
    которое автоматически генерирует малые целые идентификаторы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить