2010-04-21 5 views
2

À la dernière version, Django ne permet pas à une sous-classe d'avoir une variable portant le même nom qu'une variable dans sa super-classe, si cette variable est une instance Field.Accès au champ hérité Django

J'ai besoin d'une sous-classe pour modifier cette variable, que j'appelle 'department'. Appelant mes classes super et sub, j'ai besoin de sous pour modifier la variable de département héritée de super. Si je le redéclare, Django renvoie une erreur de champ. Bien sûr, si je ne le fais pas, le ministère ne peut pas être réaffecté. Si super n'a pas de département, j'obtiens des erreurs de base de données. Je reçois un comportement bizarre lorsque je tente de réécrire initialisation:

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

TypeError: super (type, obj): obj doit être une instance ou sous-type de type

Quelqu'un a une idée de comment faire cela?

Répondre

2

Le premier paramètre à super doit être la classe actuelle (c'est-à-dire la sous-classe), pas la superclasse.

De même, vous devez transmettre les arguments passés à __init__. Donc, il devrait être:

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