2015-04-03 56 views
0

我想在django 1.7中做一些model inheritance,我想知道是否有一種方法可以過度使用外鍵字段?我有一個模式的課程,我想能夠定義具有相同特徵的多個課程(頁,問題,水平等)重寫子模型中的ForeignKey關係?

這裏是我的代碼:

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' 

回答

0

從我讀here,它在目前(和在Django 1.7)

是不允許

字段名稱「藏」不是permitted¶

在普通的Python類繼承,允許一個孩子 類重寫父類的任何屬性。在Django中,不允許使用 作爲字段實例的屬性(至少 此刻不是)。如果某個基類有一個名爲author的字段,那麼 不能在任何類中創建另一個稱爲author的模型字段,該字段從該基類繼承。在一個父模型

重寫字段導致領域困難 諸如初始化新的實例(指定哪個字段被 在模型。INIT初始化)和序列化。這些功能 正常的Python類繼承不必在 處理相同的方式,所以Django模型繼承 和Python類繼承之間的區別並不是任意的。

此限制僅適用於字段實例的屬性。 如果您願意,可以覆蓋正常的Python屬性。它也只有 適用於Python所看到的屬性名稱:如果您手動指定數據庫列名稱爲 ,則可以在子表和祖先模型中同時出現 多個表的繼承(它們是兩個不同數據庫 表中的列)。

如果您覆蓋任何 祖先模型中的任何模型字段,Django將引發FieldError。

+0

作爲解決方法有什麼想法嗎? – broinjc 2015-04-03 22:54:00

+0

好的,補充。感謝您的建議。 – Pynchia 2015-04-04 07:16:37

+0

@broinjc你的問題已被回答? – Pynchia 2015-04-04 07:19:15