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

PositiveBigIntegerField

Поле PositiveBigIntegerField представляет собой целочисленное поле в Django, предназначенное для хранения положительных чисел большой разрядности в базе данных. Оно поддерживает значения от 0 до 9 223 372 036 854 775 807 включительно. Это поле часто используется для хранения больших идентификаторов, номеров транзакций, количественных показателей или любых других данных, где требуются большие целые положительные числа.

В базах данных поле PositiveBigIntegerField создает столбец типа unsigned big integer. В зависимости от используемой СУБД, это может быть BIGINT UNSIGNED в MySQL, BIGINT с ограничением CHECK в PostgreSQL или аналогичный тип в других базах. Поле автоматически включает валидацию, проверяющую, что значение не отрицательное и не превышает максимально допустимое.

Параметры конструктора аналогичны другим числовым полям: null, blank, default, primary_key, unique, db_index и другие. По умолчанию поле не может быть пустым и не имеет значения по умолчанию.

Синтаксис

from django.db import models field = models.PositiveBigIntegerField( verbose_name=None, name=None, primary_key=False, max_value=None, min_value=None, **options )

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

Рассмотрим пример модели, использующей PositiveBigIntegerField для хранения различных данных:

from django.db import models class Product(models.Model): name = models.CharField(max_length=200) sku = models.PositiveBigIntegerField(unique=True) stock_quantity = models.PositiveBigIntegerField(default=0) price_in_cents = models.PositiveBigIntegerField() views_count = models.PositiveBigIntegerField(default=0) def __str__(self): return self.name

Пример . Создание и сохранение записи

Создадим экземпляр модели с большими положительными числами и сохраним его в базу данных:

from myapp.models import Product product = Product.objects.create( name="Smartphone", sku=1000000000001, stock_quantity=1500, price_in_cents=59999, views_count=1000000 ) print(product.id)

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

"5"

Пример . Получение и обновление значения

Получим запись и изменим значение поля PositiveBigIntegerField:

from myapp.models import Product product = Product.objects.get(sku=1000000000001) product.stock_quantity += 500 product.views_count += 15000 product.save() print(f"Stock: {product.stock_quantity}") print(f"Views: {product.views_count}")

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

"Stock: 2000" "Views: 1015000"

Пример . Валидация значений

При попытке сохранить отрицательное или слишком большое значение поле выбрасывает исключение:

from django.db import models from django.core.exceptions import ValidationError from myapp.models import Product try: product = Product( name="Invalid Product", sku=9999999999999999999, stock_quantity=-100, price_in_cents=1000, views_count=0 ) product.full_clean() except ValidationError as e: print(e)

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

"{'sku': ['Ensure this value is less than or equal to 9223372036854775807.'], 'stock_quantity': ['Ensure this value is greater than or equal to 0.']}"

Пример . Использование в формах

Поле PositiveBigIntegerField автоматически создает соответствующее поле формы, которое проверяет ввод пользователя:

from django import forms from myapp.models import Product class ProductForm(forms.ModelForm): class Meta: model = Product fields = ['name', 'sku', 'stock_quantity', 'price_in_cents', 'views_count'] form_data = { 'name': 'Laptop', 'sku': 2000000000002, 'stock_quantity': 2500, 'price_in_cents': 99999, 'views_count': 500000 } form = ProductForm(form_data) if form.is_valid(): product = form.save() print(product.sku)

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

"2000000000002"

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

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