我有两种模式:
# app1
class ParentModel(models.Model):
# some fields
现在,在另一个应用程序中,我有子模型:
# app2
from app1.models import ParentModel
class ChildModel(ParentModel):
# some fields here too
在app2
django的初始迁移中,使用名为OneToOneField
的{{1}}创建parent_link=True
。
现在我想更改此自动生成的字段,让我们说parentmodel_ptr
,所以我使用此操作创建了新的迁移:
IntegerField
尝试迁移,我遇到了异常
class Migration(migrations.Migration):
dependencies = [
('app2', '0001_initial'),
]
operations = [
migrations.AlterField(
'childmodel',
'parentmodel_ptr',
models.IntegerField(null=True, blank=True)
)
]
那么甚至可能以某种方式成功吗?
答案 0 :(得分:1)
如果您的代码支持它,您可以将父类更改为抽象类,并在子模型中包含所有字段。但是,如果您仍然需要单独使用父对象,那么我不认为您可以在没有严重黑客攻击的情况下更改Django OneToOne链接(不推荐)。
如果您只需要关系并且不需要方法等,那么您可以删除继承并使用自创建的OneToOneField或将ForeignKey保存到该另一个对象的IntegerField。你可以用你的最终目标详细说明问题,因此提供真正的解决方案而不是理论会更简单。