我有两种型号:
# app1
class ParentModel(models.Model):
# some fields
现在,在另一个应用程序中,我有一个孩子模型:
^{pr2}$在app2
的初始迁移中,django创建了名为parent_link=True
的OneToOneField
。在
现在我想将这个自动生成的字段改为IntegerField
,因此我使用以下操作创建新的迁移:
class Migration(migrations.Migration):
dependencies = [
('app2', '0001_initial'),
]
operations = [
migrations.AlterField(
'childmodel',
'parentmodel_ptr',
models.IntegerField(null=True, blank=True)
)
]
尝试迁移时,我有个例外
django.core.exceptions.FieldError: Auto-generated field 'parentmodel_ptr' in class 'ChildModel' for parent_link to base class 'ParentModel' clashes with declared field of the same name.
那么,有没有可能做到呢?在
如果您的代码支持它,您只需将父类更改为抽象类,并在子模型中包含所有字段。但是,如果您仍然需要单独的父对象,那么我不认为您可以更改Django OneToOne链接而不进行一些严重的黑客攻击(不推荐)。在
如果您只需要关系而不需要方法等,那么您可以删除继承并使用一个自己创建的OneToOneField或一个IntegerField来保存另一个对象的ForeignKey。你可以用你的最终目标来阐述这个问题,因此提供真正的解决方案比提供理论更简单。在
相关问题 更多 >
编程相关推荐