我有一个这样的模型(为了相关性而简化):
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。
最佳答案
ForeignKey
和 OneToOneField
是一样的,除了 OneToOneField
有一个唯一的约束。尝试更改模型中的字段并运行 makemigrations
——我认为 Django 应该足够聪明,能够创建所需的迁移。
开始之前,您需要确保没有多个 director 实例指向同一用户,因为一对一字段不允许这样做。
关于django - 如何安全地从模型中删除 ForeignKey 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34775035/