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

Поле BigAutoField

Поле BigAutoField в Django представляет собой поле для автоматически инкрементируемого целого числа, которое используется в качестве первичного ключа. В отличие от AutoField, это поле поддерживает значительно больший диапазон значений (от 1 до 9 223 372 036 854 775 807), что делает его идеальным для приложений, которые могут превысить лимит стандартного 32-битного целого числа. Поле автоматически генерирует уникальное значение при создании новой записи, поэтому его не нужно указывать явно при вставке данных. Это поле является рекомендуемым выбором для первичного ключа в моделях, которые будут хранить большое количество записей.

При создании модели Django автоматически добавляет поле id с типом BigAutoField, если не указано другое поле первичного ключа. Вы также можете явно определить BigAutoField как первичный ключ, указав параметр primary_key=True. Это поле наследует все возможности стандартного автополя, включая автоматическое присвоение значений при сохранении объекта.

Синтаксис

field = models.BigAutoField(**options)

Параметры

Поле BigAutoField принимает следующие параметры:

BigAutoField( verbose_name=None, # Человекочитаемое имя поля primary_key=False, # Делает поле первичным ключом editable=True, # Можно ли редактировать поле help_text='', # Текст подсказки для поля db_column=None, # Имя колонки в БД default=None, # Значение по умолчанию unique=False, # Должно ли значение быть уникальным db_index=False, # Создавать ли индекс blank=False, # Может ли поле быть пустым null=False, # Может ли поле хранить NULL unique_for_date=None, # Уникальность по дате unique_for_month=None,# Уникальность по месяцу unique_for_year=None, # Уникальность по году )

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

Рассмотрим пример создания модели с явно указанным полем BigAutoField в качестве первичного ключа:

from django.db import models class Article(models.Model): id = models.BigAutoField(primary_key=True) title = models.CharField(max_length=200) content = models.TextField() created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return self.title

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

При создании новой записи значение поля BigAutoField генерируется автоматически:

from myapp.models import Article # Создаем новую статью без указания id article = Article.objects.create( title='First big article', content='This is a very long content...' ) # Django автоматически присвоит уникальное значение id print(f"Article ID: {article.id}")

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

"Article ID: 1"

Пример . Получение последнего значения

Для получения последнего созданного значения можно использовать методы QuerySet:

from myapp.models import Article # Получаем последнюю созданную статью last_article = Article.objects.latest('id') print(f"Last article ID: {last_article.id}") # Получаем максимальное значение id max_id = Article.objects.aggregate(max_id=models.Max('id')) print(f"Maximum ID: {max_id['max_id']}")

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

"Last article ID: 1" "Maximum ID: 1"

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

При создании миграций Django автоматически генерирует корректные SQL-запросы для создания колонки с типом BIGINT:

from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ ('myapp', '0001_initial'), ] operations = [ migrations.CreateModel( name='Product', fields=[ ('id', models.BigAutoField(primary_key=True)), ('name', models.CharField(max_length=100)), ('price', models.DecimalField(max_digits=10, decimal_places=2)), ], ), ]

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

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