Django中的多重继承:构造函数问题

1 投票
2 回答
862 浏览
提问于 2025-04-16 04:04

我有一个这样的模型:

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)

现在我有点迷茫了=S 你们有没有想法,Person的构造函数应该怎么写?

顺便说一下:我在用django 1.1和python 2.6

2 个回答

0

你可以使用Django的 post_init 信号。这个信号在模型被创建之后会被触发,并且会传递给你刚刚创建的实例。

1

首先,建议使用新式类(也就是那些继承自 object 的类)。其次,了解一下在多重继承的情况下,Python 的 super 是怎么工作的,可以参考这个链接:http://fuhm.net/super-harmful/

还有一个很不错的讲座可以了解这个内容:http://europythonvideos.blip.tv/file/4000758/

撰写回答