Вызываемое значение по умолчанию для уникального поля не будет генерировать уникальные значения при миграции

Использование Django/DRF для создания CRUD api

Я пытаюсь использовать RandomUUID для создания UUID из Postgres:

from django.db import models
from django.contrib.postgres.functions import RandomUUID

class Year(models.Model):
    year_id = models.UUIDField(
        primary_key=True, default=RandomUUID, editable=False)

Когда я запускаю python manage.py makemigrations

Выдает такую ошибку:

Callable default on unique field year.year_id will not generate unique values upon migrating

Что я делаю не так?

<
  1. Если вы используете PostgreSQL < 13, убедитесь, что у вас правильно установлено расширение pgcrypto. Согласно docs:

На PostgreSQL < 13 должно быть установлено расширение pgcrypto. Для его установки можно использовать операцию миграции CryptoExtension.

  1. В качестве альтернативы вы можете использовать uuid4 из Python. В файле models.py импортируйте uuid4
  2. .
from uuid import uuid4

Тогда в ваших моделях:

year_id = models.UUIDField(primary_key=True, default=uuid4(), editable=False)
Вернуться на верх