2010-07-06 10 views
5

Sto usando Django e una definizione modello comeIn Django, __init__ funzione del modello, cause attribuiscono l'errore, non è possibile salvare nel database

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) 

Il tentativo di chiamare save() su un oggetto della classe domanda, provoca il guscio di rispondere 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' 

Tuttavia, la rimozione della funzione _____init_____, rende ancora tutto ok. Qualche idea su cosa causa questo e come risolverlo?

molte grazie

risposta

11

È necessario chiamare la superclasse __init__ metodo ad un certo punto nella sottoclasse __init__ metodo:

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

Qualcosa che le persone dovrebbero sapere che mi hanno appeso è che super deve essere chiamato prima di assegnare qualsiasi campo alla modella. Sembra anche che non sia necessario salvare il modello dopo aver assegnato i campi –

2

Secondo il Django models docs, non è raccomandato per sovrascrivere __init__ metodo per modelli . È preferibile utilizzare @classmethod o gestore personalizzato.

Problemi correlati