перенос поля UUID первичного ключа модели django в CharField

#python #sql #django #oracle #django-models

#python #sql #django #Oracle #django-модели

Вопрос:

Мне нужно изменить размер поля идентификатора в базе данных Oracle для поддержки хранения более длинных идентификаторов. По умолчанию использование UUIDField в django создает таблицу с полем varchar размером 32 байта, но теперь она нам нужна для хранения идентификаторов, сгенерированных uuid.uui4, и предоставленных идентификаторов длиной символов до 80. Какой наименее сложный способ сделать это в django, чтобы миграции были согласованы в разных средах при сохранении отношений внешнего ключа в других моделях?

 class CurrentModel(models.Model):
   id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

class desiredModel(models.Model):
   id = models.CharField(max_length=80, primary_key=True, default=uuid.uuid4)
  

Это было внесенное нами изменение, но oracle выдает ошибку при применении миграции django.db.utils.Ошибка базы данных: ORA-01430: добавляемый столбец уже существует в таблице

Ответ №1:

Я не эксперт по Django, но вам, вероятно, потребуется использовать опцию AlterField в Django.