Django преобразовать поле изображения в UUID внешнего ключа - PullRequest
0 голосов
/ 02 мая 2020

У меня есть django проект, в котором у меня было поле изображения, как показано ниже

certificate = models.ImageField(null=True, blank=True, max_length=1000)

, но мне нужно изменить поле изображения на UUID внешнего ключа, как показано ниже

certificate = models.ForeignKey(Certificates, null=True, blank=True, on_delete=models.CASCADE)

но я получаю ошибку переноса, как показано ниже,

Applying templates.0016_auto_20200502_0452...Traceback (most recent call last):
File "/home/sakthips/.local/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
   return self.cursor.execute(sql, params)
psycopg2.DataError: invalid input syntax for type uuid: ""

эта ошибка немного странная, может кто-нибудь помочь мне решить. Я знаю, что могу удалить существующее поле и добавить новое поле , это одно из решений. Я ожидал некоторых других решений.

1 Ответ

1 голос
/ 02 мая 2020

До того, как поле изображения сертификата было изменено, оно может содержать данные столбца сертификата. Поэтому django хотят изменить данные на новый тип, иногда некоторые данные не могут быть преобразованы, затем возникает ошибка.

два способа ее решения:

  1. открыть базу данных удалите соответствующий столбец целевой таблицы.
  2. комментарий к столбцу сертификата в соответствующей модели объекта и соответствующей форме, затем выполните миграции и перейдите к удалению столбца сертификата. Отмените комментарий к столбцу сертификата (ForeignKey) и соответствующей форме, затем выполните повторную миграцию и выполните миграцию, чтобы добавить новый столбец сертификат_идентификатора.

Надеюсь, он вам пригодится.

...