2010-04-21 106 views
2

從最新版本開始,如果該變量是Field實例,那麼Django不允許子類在其超類中具有與變量同名的變量。Django繼承字段訪問

我需要一個子類來修改這個變量,我稱之爲'部門'。調用我的類super和sub,我需要sub來修改它從super繼承的department變量。如果我重新聲明它,Django會拋出一個字段錯誤。當然,如果我不這樣做,部門不在重新分配的範圍內。如果super沒有部門,我會收到數據庫錯誤。我得到奇怪的行爲,當我嘗試重寫初始化

def __init__(self): 
    super(theSuperClass, self).__init__() 

類型錯誤:超(類型,OBJ):OBJ必須是實例或類型的亞型

任何人有任何想法如何做到這一點?

回答

2

super的第一個參數必須是當前類(即子類),而不是超類。

此外,您應該傳遞給傳遞給__init__的參數。所以它應該是:

class MySubClass(MySuperClass): 
    def __init__(self, *args, **kwargs): 
     super(MySubClass, self).__init__(*args, **kwargs)