2010-04-21 84 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)