django中的多重继承。构造函数的问题

时间:2010-09-13 10:51:03

标签: python django constructor multiple-inheritance

我有一个这样的模型:

class Person(models.Model,Subject):
    name = ..

类Subject不应该在数据库中,所以它不会从models.Model扩展:

class Subject:
    def __init__(self,**kargs):
        _observers = []

我的问题是Subject的构造函数从不调用,所以我尝试将其添加到类Person:

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

但现在我有一个错误,说 init 需要1个参数,但是给出了7个,我唯一要做的就是

>>> Person.objects.get(pk=1)

现在我迷路了=你知道人的构造者应该怎么做?

BTW:我正在使用django 1.1和python 2.6

2 个答案:

答案 0 :(得分:1)

首先,使用新式类(继承自object的类)。其次,阅读python的super在多继承场景中的表现:http://fuhm.net/super-harmful/

还有一个很好的讨论:http://europythonvideos.blip.tv/file/4000758/

答案 1 :(得分:0)

您可以使用Django的post_init signal。它在实例化模型后调用,并传递给创建的实例。