使用外键的 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
移动到列表的顶部并在它和 RemoveField
s RunPython
块之间注入,该块将 id 从旧字段重写为新字段(如果需要,在相反的方向)。
我正在尝试迁移此模型:
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
移动到列表的顶部并在它和 RemoveField
s RunPython
块之间注入,该块将 id 从旧字段重写为新字段(如果需要,在相反的方向)。