Flask/SQLAlchemy Attribut hinzufügen nicht möglich
Verfasst: Sonntag 8. Juli 2018, 18:32
Hallo, habe nun begonnen, mein 10 Jahre altes TG-Programm auf Flask/SQLAlchemy/Python3 zu aktualisieren. Klappt überraschend gut. Aber hier komme ich nicht weiter:
Ich habe eine Datenbank mit einer 1:n Beziehung (main=1, positionen=n). Aus den Werten der Datenbank werden dann noch weitere Werte berechnet. Diese sollen dann mit im Template angezeigt werden. Dafür nehme ich die Werte, mache die Berechnung und füge der Klasse ein weiteres Attribut mit dem Ergebnis hinzu.
Hier ein Minimalbeispiel:
So hat es unter TG1/SQLAlchemy0.6 funktioniert. Das klappt nun nicht mehr. Das Attribut position.wert gibt es nach Durchlauf der for-Schleife nur im letzten von n Datensätzen. Warum, was ist hier los? Ist das ein neues Feature von Python3 oder hat das mit SQLAlchemy zu tun? Keine Fehlermeldung, Programm läuft durch.
Programmversionen: jeweils die Aktuellen unter Ubuntu Xenial
Grüße Ingo
Ich habe eine Datenbank mit einer 1:n Beziehung (main=1, positionen=n). Aus den Werten der Datenbank werden dann noch weitere Werte berechnet. Diese sollen dann mit im Template angezeigt werden. Dafür nehme ich die Werte, mache die Berechnung und füge der Klasse ein weiteres Attribut mit dem Ergebnis hinzu.
Hier ein Minimalbeispiel:
Code: Alles auswählen
@bp.route('/index',methods=('GET','POST'))
def index():
if request.method == 'POST':
verweis = request.form['verweis']
main=models.mtab.query.filter_by(verweis=verweis).one() # SQLAlchemy db.Model
positionen=main.positionen # das ist die 1:n relationship
#Attribut mit neu berechnetem Wert hinzufügen
for position in positionen:
position.wert="Berechneter Wert"
return render_template('/test.html',titel="test", positionen=positionen)
Programmversionen: jeweils die Aktuellen unter Ubuntu Xenial
Grüße Ingo