2010-07-06 16 views
5

estoy usando Django y una definición de modelo comoEn Django, __init__ función del modelo, causas atribuyen error, no se puede guardar en la base de datos

class Question(models.Model): 
    title = models.CharField(max_length=100) 
    description = models.TextField() 
    order = models.IntegerField() 

    def __init__(self, *args, **kwargs): 
     self.title = kwargs.get('title','Default Title') 
     self.description = kwargs.get('description', 'DefDescription') 
     self.order = kwargs.get('order', 0) 

intentando llamar a save() en un objeto de la clase pregunta, hace que el shell responda con

/django/db/utils.py", line 133, in _route_db 
    return hints['instance']._state.db or DEFAULT_DB_ALIAS 
AttributeError: 'Question' object has no attribute '_state' 

Sin embargo, al eliminar la función _____init_____, todo vuelve a estar bien. ¿Alguna idea sobre qué causa esto y cómo resolverlo?

muchas gracias

Respuesta

11

Es necesario llamar a la superclase __init__ método en algún momento de su subclase __init__ método:

def __init__(self, *args, **kwargs): 
    super(Question, self).__init__(*args, **kwargs) 
    # your code here 
+0

Algo que la gente debería saber que me colgó es que debe llamarse a super antes de asignar cualquier campo al modelo. También parece que no es necesario guardar el modelo después de asignar los campos –

2

De acuerdo con la Django models docs, no es recomendable para sobrescribir __init__ método para modelos . Se prefiere usar @classmethod o administrador personalizado.

Cuestiones relacionadas