我有一个 Django 模型定义为:
from users.models import User
class Record(models.Model):
user = models.ForeignKey(
User,
on_delete=SET_NULL,
null=True)
...
我意识到最好将上述模型重写为:
from userprofile.models import UserProfile
class Record(models.Model):
user = models.ForeignKey(
UserProfile,
on_delete=SET_NULL,
null=True)
....
如何迁移(因此模型 Record
的新定义)被使用,而不必丢失数据库中的旧 Record
实例?这种迁移的一般过程是什么?因为如果我使用 Record
的新定义进行迁移,我将无法访问旧的 Record
对象,因此我无法更新它们。但是,如果我不迁移,Django 不会让我使用 UserProfile
作为 user
字段。
答案 0 :(得分:0)
这种方式没有什么可以迁移的,因为 user
是一个 Python 属性并且没有支持 db 列,因为它没有被定义为 ForeignKey。
在这种情况下,Django 会自动处理这个,因为它会发现模型名称的变化,它会改变数据库端的表名,然后它会更新记录表的引用表。
您可以运行 python manage.py makemigrations
并查看生成的迁移。