Django 将图像字段转换为外键 UUID

Django convert imagefield to Foreign key UUID

我有 django 项目,我有像下面这样的 imagefield

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: ""

这个错误有点奇怪,谁能帮我解决一下。我知道我可以 删除现有字段并添加新字段 这是一种解决方案。我期待其他一些解决方案。

更改证书图像字段之前,它可能有列证书的数据。所以django要修改数据为新的类型,有时有些数据无法转换,然后出现错误。

两种解决方法:

  1. 打开数据库,删除目标table相关的列。
  2. 在相关的特征模型和表单中注释证书列,然后进行迁移和迁移以删除证书列。取消注释 certificate(ForeignKey) 列和相关表格,然后重做 makemigrations 并迁移以添加新的 certificate_id 列。

希望对您有所帮助。