Множественное наследование в Джанго.Проблема с конструкторами - PullRequest
1 голос
/ 13 сентября 2010

У меня есть такая модель:

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

Класс Subject не должен находиться в базе данных, поэтому он не распространяется на модели. Модель:

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, ты хоть представляешь, каким должен быть конструктор человека?

Кстати: я использую django 1.1 и python 2.6

Ответы [ 2 ]

1 голос
/ 13 сентября 2010

Прежде всего, используйте классы нового стиля (те, которые наследуются от object).Во-вторых, прочитайте о том, как супер-поведение Python ведет себя в сценариях множественного наследования: http://fuhm.net/super-harmful/

Есть также хороший доклад, освещающий его:

0 голосов
/ 13 сентября 2010

Вы можете использовать сигнал post_init Джанго .Он вызывается после создания экземпляра модели и передается созданному экземпляру.

...