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

Поле UUIDField

Поле UUIDField в Django предназначено для хранения UUID (Universally Unique Identifier) - 128-битных уникальных идентификаторов. Это поле автоматически генерирует уникальные значения, что делает его идеальным выбором для первичных ключей или полей, требующих глобальной уникальности. По умолчанию UUIDField использует версию 4 UUID, которая генерируется на основе случайных чисел.

При создании модели с UUIDField можно указать параметр default со значением uuid.uuid4 для автоматической генерации UUID при создании записи. Также поле поддерживает параметр primary_key, позволяющий использовать UUID в качестве первичного ключа вместо стандартного автоинкрементируемого целочисленного поля.

Синтаксис

from django.db import models import uuid class MyModel(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) uuid_field = models.UUIDField(default=uuid.uuid4, unique=True)

Пример

Давайте создадим модель для хранения пользователей с уникальным идентификатором:

from django.db import models import uuid class UserProfile(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) name = models.CharField(max_length=100) email = models.EmailField(unique=True) def __str__(self): return self.name

Теперь создадим несколько пользователей и посмотрим на их идентификаторы:

from myapp.models import UserProfile user1 = UserProfile.objects.create(name="John Doe", email="john@example.com") user2 = UserProfile.objects.create(name="Jane Smith", email="jane@example.com") print(user1.id) print(user2.id)

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

"3f2504e0-4f89-41d3-9a0c-0305e82c3301" "c3f7b0a0-8b2d-4a5e-8f3c-1b2d3e4f5a6b"

Пример

Используем UUIDField в качестве внешнего ключа для связи с другой моделью:

from django.db import models import uuid class Category(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) name = models.CharField(max_length=100) def __str__(self): return self.name class Article(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) title = models.CharField(max_length=200) category = models.ForeignKey(Category, on_delete=models.CASCADE) def __str__(self): return self.title

Создадим категорию и статью, чтобы увидеть, как работает связь:

from myapp.models import Category, Article category = Category.objects.create(name="Technology") article = Article.objects.create( title="Django UUID Field Guide", category=category ) print(f"Category ID: {category.id}") print(f"Article ID: {article.id}") print(f"Article Category ID: {article.category.id}")

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

"Category ID: a1b2c3d4-e5f6-7890-abcd-ef1234567890" "Article ID: b2c3d4e5-f6a7-8901-bcde-f234567890ab" "Article Category ID: a1b2c3d4-e5f6-7890-abcd-ef1234567890"

Пример

Фильтрация записей по UUID полю с использованием методов QuerySet:

from myapp.models import Article import uuid # Фильтрация по точному совпадению UUID specific_uuid = uuid.UUID("b2c3d4e5-f6a7-8901-bcde-f234567890ab") article = Article.objects.get(id=specific_uuid) print(article.title) # Фильтрация по списку UUID uuid_list = [ uuid.UUID("b2c3d4e5-f6a7-8901-bcde-f234567890ab"), uuid.UUID("c3d4e5f6-a7b8-9012-cdef-34567890abcd") ] articles = Article.objects.filter(id__in=uuid_list) for article in articles: print(article.title)

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

"Django UUID Field Guide" "Article 1" "Article 2"

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

  • поле CharField,
    которое используется для хранения строковых данных
  • поле IntegerField,
    которое хранит целочисленные значения
  • поле BooleanField,
    которое хранит логические значения (True/False)
  • поле DateTimeField,
    которое хранит дату и время
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить