使用外键的 Django 迁移

Django migrations with foreign key

我正在尝试迁移此模型:

class Questionpart_image(models.Model):
    questionpart = models.ForeignKey(Questionpart, null=True, blank=True)
    image = models.ImageField()

对此:

class Questionpart_image(Questionpart): # notice this base class
    image = models.ImageField()

利用继承。 Django 产生以下迁移:

class Migration(migrations.Migration):

dependencies = [
    ('ochsite', '0016_auto_20150809_1903'),
]

operations = [
    migrations.RemoveField(
        model_name='questionpart_image',
        name='id',
    ),
    migrations.RemoveField(
        model_name='questionpart_image',
        name='questionpart',
    ),
    migrations.AddField(
        model_name='questionpart_image',
        name='questionpart_ptr',
        field=models.OneToOneField(default='', primary_key=True, to='ochsite.Questionpart', serialize=False, parent_link=True, auto_created=True),
        preserve_default=False,
    ),
]

但这并没有将 questionpart 字段中的正确外键设置为 questionpart_ptr。我怎样才能做到这一点?
找了很久都没找到...谢谢

不要依赖自动迁移,自己制作或修改那个。

最简单的解决方案是将迁移中的 AddField 移动到列表的顶部并在它和 RemoveFields RunPython 块之间注入,该块将 id 从旧字段重写为新字段(如果需要,在相反的方向)。