Django基于现有字段的新外键字段

Luc*_*s B 6 python django default model foreign-keys

我正在尝试执行以下操作,但在文档或 stackoverflow 上找不到好的解决方案。

我有一个现有的数据库,其中约有 1000 个用户使用此模型:

class Student(AbstractBaseUser):
    email = models.EmailField(verbose_name='email address', max_length=255, unique=True)
    school = models.CharField(max_length=255,null=True, blank=True)
    ...
Run Code Online (Sandbox Code Playgroud)

但我最终决定使用单独的模型来处理学校:

class Student(AbstractBaseUser):
    email = models.EmailField(verbose_name='email address', max_length=255, unique=True)
    school = models.ForeignKey('School')

class School(models.Model):
    name = models.CharField(max_length=255,unique=True)
Run Code Online (Sandbox Code Playgroud)

我如何处理所有现有的学生,知道对于未来的学生,我将直接在订阅表格中询问学校外键?

sam*_*amu 2

如果您想使用 ORM 实时执行此操作,您可以将该Student.school字段重命名为Student.school_old,然后添加Student.school外键,并使用以下代码片段来确保数据正常:

for student in Student.objects.filter(school__isnull=False):
    try:
        school = School.objects.get(name=student.school_old)
    except School.DoesNotExist:
        school = School.objects.create(name=student.school_old)
    student.school = school
    student.save()
Run Code Online (Sandbox Code Playgroud)