繁体   English   中英

在子模型中重写ForeignKey关系?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM