将imagefield转换为外键UUID

问题描述 投票:0回答:1

我有一个django项目,我有如下的imagefield。

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

但我需要将imagefield改为外键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项目,我有像下面的certificate = models.ImageField(null=True, blank=True, max_length=1000)这样的imagefield,但我需要一些其他的解决方案。

django postgresql django-migrations
1个回答
1
投票

在修改证书imageefield之前,它可能有列证书的数据。所以django要把数据修改成新的类型,有时候有些数据不能投递,就会出现错误。

有两种方法可以解决。

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

希望对你有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.