作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有三个模型,例如:
class A(models.Model):
pass
# more fields here
class B(A):
pass
# more fields here
class C(B):
pass
# more fields here
新要求要求我改为:
class A(models.Model):
pass
# more fields here
class B(A):
pass
# more fields here
class C(A):
pass
# more fields here
代码已经在生产环境中运行,所以我需要进行一些数据迁移。认为它会顺利进行,这就是我计划做的事情:
C
的 b_ptr_id
保存到临时字段。C
对 B
的继承(在此过程中删除 b_ptr_id
)。C
继承于 A
(在进程中添加 a_ptr_id
)。C
,将临时字段中存储的值复制到a_ptr_id
。 我的问题出在步骤 3 上。当我尝试从 A
继承 C
时,我收到错误 django.core.exceptions.FieldError :类“C”中的本地字段“a_ptr”与基类“B”中名称相似的字段发生冲突
。所以看起来 Django 仍然“记住”C
曾经从 B
继承,即使 b_ptr_id
不再是数据库中的C
。我怎样才能让它忘记,以便我可以继续前进?或者有没有更好的方法让子模型继承其祖 parent 模型而不是父模型?
最佳答案
不确定是否有更简单的方法来做到这一点,但是......
尝试创建一个继承 A 的 C'。然后创建一个程序,为每个 C 实例创建一个 C' 实例。(之后删除C的所有实例)
如果您想保留名称 C,请更新 C 的架构,然后从 C' 实例重新填充 C。
希望有帮助。 :)
关于python - Django 1.7.1 : Child model, 删除对父模型的所有引用并让子模型继承自爷爷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32947888/
是否可以访问对象父类(super class)(或祖父)的父类(super class)方法? 例如: GrandFatherObject : NSObject SuperObject : Grand
我是一名优秀的程序员,十分优秀!