2010-04-21 5 views
2

Начиная с самой последней версии Django не позволяет подклассу иметь переменную с тем же именем, что и переменная в ее суперклассе, если эта переменная является экземпляром поля.Django Inherited Field Access

Мне нужен подкласс, чтобы изменить эту переменную, которую я называю «отдел». Вызывая мои классы super и sub, мне нужно, чтобы sub изменял переменную отдела, которую она наследует от super. Если я его обмениваю, Django выдает ошибку поля. Конечно, если я этого не сделаю, отдел не может переназначить. Если у супер нет отдела, я получаю ошибки базы данных. Я получаю странное поведение, когда я пытаюсь перезаписью инициализации:

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

TypeError: супер (типа, объект): объекты должны быть экземпляр или подтип типа

Кто-нибудь есть какие-либо идеи, как это сделать?

ответ

2

Первый параметр для super должен быть текущий класс (то есть подкласс), а не суперкласс.

Кроме того, вы должны передать аргументы, переданные __init__. Таким образом, это должно быть:

class MySubClass(MySuperClass): 
    def __init__(self, *args, **kwargs): 
     super(MySubClass, self).__init__(*args, **kwargs)