[英]Override ForeignKey relationship in child model?
我想在Django 1.7中做一些模型继承 ,我想知道是否有办法超越外键字段? 我有一个课程表的架构,我希望能够定义具有相同功能(页面,问题,级别等)的多个课程表
这是我的代码:
http://hastebin.com/ixekepolik.py (第117、118、120、121、123、129和131行)
我目前收到此错误:
django.core.exceptions.FieldError: Local field 'level' in class 'HVPage' clashes with field of similar name from base class 'Page'
根据我在这里阅读的内容,目前(在Django 1.7中)不允许这样做
字段名称“隐藏”是不允许的¶
在正常的Python类继承中,子类可以覆盖父类的任何属性。 在Django中,这不允许用于Field实例的属性(至少当前是不允许的)。 如果基类具有一个称为author的字段,则不能在从该基类继承的任何类中创建另一个称为author的模型字段。
在一个父模型重写字段导致困难的领域,如初始化新的实例(指定哪个字段在模型被初始化。INIT)和序列化。 这些是普通Python类继承不必以完全相同的方式处理的功能,因此Django模型继承和Python类继承之间的区别不是任意的。
此限制仅适用于属于Field实例的属性。 如果需要,可以覆盖普通的Python属性。 它也仅适用于Python所见的属性名称:如果您手动指定数据库列名称,则在多表继承的子模型和祖先模型中都可以显示相同的列名称(它们是列在两个不同的数据库表中)。
如果您覆盖任何祖先模型中的任何模型字段,则Django都会引发FieldError。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.