django - 如何安全地从模型中删除 ForeignKey 字段?

标签 django postgresql django-models foreign-keys

我有一个这样的模型(为了相关性而简化):

class Director(models.Model):

    first_name = models.CharField(max_length=200)
    last_name = models.CharField(max_length=200)
    user_account = models.ForeignKey(User, null=True, blank=True)

我刚刚意识到 user_account 需要是 OneToOneField 而不是 ForeignKey。进行该更改本质上意味着删除现有的 user_account 字段并创建新字段。

问题是我过去在处理 ForeignKey 字段时有过糟糕的经历。更糟糕的是,我已经在数据库中创建了几个 Director 对象,其中 ForeignKey 链接到 User 对象。

我的问题是如何删除并最终更改 user_account 字段而不会在以后导致运行时错误?

附加上下文:我正在使用 Django 1.9 和 PostgreSQL。

最佳答案

ForeignKeyOneToOneField 是一样的,除了 OneToOneField 有一个唯一的约束。尝试更改模型中的字段并运行 makemigrations——我认为 Django 应该足够聪明,能够创建所需的迁移。

开始之前,您需要确保没有多个 director 实例指向同一用户,因为一对一字段不允许这样做。

关于django - 如何安全地从模型中删除 ForeignKey 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34775035/

相关文章:

python - Postgres 性能

python - Django应用程序的数据库设计

python - 无法为 Django 站点创建 super 用户 - PostgreSQL 数据库 - fatal error : password authentication

python - 解析在 Django 中使用 Ajax GET 方法发送的 json 对象

python - 重命名 models.py 中的外键

java - 如何根据给定模式重新排列列表中的项目?

sql - PostgreSQL 查询效率

postgresql - 一个 INSERT 多个 SELECT

python - 重复的 Django 查询集?

django - django何时计算未存储在数据库中的属性