2010-09-13 7 views
1

У меня есть модель, как это:Множественное наследование в джанго. Проблема с конструкторами

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

Класс Субъект не должен быть в базе данных так, он не простирается от models.Model:

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

мой проблема заключается в том, что конструктор объекта съемки никогда не называли, поэтому я пытался добавить это к классу Person:

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

, но теперь я об ошибке сказав, что инициализации принимает 1 аргументы, но 7 приведены, и единственное, что я делаю это

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

теперь я потерял = S у вас есть какие-либо идеи, как в конструктором человека должно быть?

BTW: Я использую Django 1.1 и Python 2.6

ответ

1

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

Существует также хороший разговор покрывая его: http://europythonvideos.blip.tv/file/4000758/

+0

thx много он отлично работает – pleasedontbelong

0

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

Смежные вопросы