2015-09-15 3 views
6

Ich habe die folgende Funktion in der Klasse hr_evaluation_interview:Wie führe ich eine Abfrage in Odoo-8 von Python aus?

@api.onchange('evaluation_id') 
def onchange_evalID(self): 
    self.deadline=self.env.cr.execute('SELECT date FROM hr_evaluation_evaluation where id=119') 

Hinweis: Ich bin gerade id=119 in der Abfrage zu Testzwecken zu geben.

Wenn ich geben self.deadline=datetime.now.strftime(%Y-%m-%d %H:%M:%S") es funktioniert gut und ändert den Wert von Feld deadline, wenn der Wert von Feld evaluation_id ändert. Nochmals zum Testen.

Was ich wirklich brauche, ist eine Abfrage ähnlich wie ich erwähnt ausführen. Wenn ich diese Abfrage ausführe, druckt nichts auf dem Feld deadline. Wenn ich das Protokoll prüfe, sehe ich diese Warnung:

Ich versuchte, online zu überprüfen, warum diese Warnung, aber keine Hilfe bekam. Mache ich etwas falsch? Wie genau kann ich Abfragen innerhalb von @api.onchange(self) ausführen?

+0

Es gibt viele solcher Beispiele, die bereits im Kerncode von odoo zum Ausführen der Abfrage verfügbar sind. Hier müssen Sie nach dem Ausführen der Abfrage noch die fetch-Anweisung aufrufen, um das Ergebnis zu erhalten. –

+0

Könnten Sie bitte einen Code bereitstellen? – solving12

Antwort

5

Wie Hardik sagte, cr.execute() gibt nicht direkt Sie Ergebnis zurück. Sie müssen die Werte nach Ausführung der Abfrage vom Cursor abrufen. Versuchen Sie wie folgt aus:

@api.onchange('evaluation_id') 
def onchange_evalID(self): 
    self.env.cr.execute('SELECT date ' 
           'FROM hr_evaluation_evaluation where id=119') 
    self.deadline = self.env.cr.fetchone()[0] 
+1

Danke für die Antwort, aber es sagt 'AttributError: 'NoneType' Objekt hat kein Attribut 'fetchone'':/Irgendeine Idee, was ist los? – solving12

+0

Ich habe diese Abfrage mit Postgres getrennt versucht und es funktioniert gut, so dass die Rückkehr ist keine für diese Abfrage. – solving12

+0

Die Datenbank, von der ich Daten abrufen möchte, ist in einer anderen Modellklasse (hr_evaluation_interview) definiert, und ich arbeite in einer anderen Modellklasse in derselben Datei (hr_evaluation_interview). Aber beim Ausführen der Abfrage spielt es keine Rolle, welches Modell ich gerade ausführe. – solving12

1

Wenn evaluation_id ist m2o Bereich hr.evaluation.evaluation Modell, das Sie unter Code ausprobieren können. Sie müssen keine Abfrage ausführen.

Verwandte Themen