Ich bekomme keine Fehler, es aktualisiert nur nicht den Datensatz. Ich bin die Bearbeitung des Benutzerdatensatzes und Speicher einzelne Felder (I nicht populate_obj()
verwenden kann, weil ich nur ein paar ausgewählten Felder zu aktualisieren, aber nach db.session.commit()
, es immer noch nicht in die Tabelle aktualisieren.SQLAlchemy nicht Datensatz aktualisieren
@app.route("/user/edit/<int:user_id>", methods=["GET", "POST"])
@login_required
def edit_user(user_id):
user = User.query.get_or_404(user_id)
form = EditUserForm()
form.username.data = user.username
form.email.data = user.email
form.first_name.data = user.first_name
form.last_name.data = user.last_name
if form.validate_on_submit():
user.email = form.email.data
user.first_name = form.first_name.data
user.last_name = form.last_name.data
db.session.commit()
flash("Updated user '{}'".format(user.username))
return redirect(url_for("user"))
return render_template("user_edit_form.html", form=form, action="Edit", user_id=user_id)
Es gibt sogar Umleitungen blinkt die Nachricht, die es den Datensatz, aber nichts wird aktualisiert, um die mySQL-Datenbank von Sqlalchemy geschrieben.
Hinzufügen db.session.flush()
nach commit()
keinen Unterschied macht, noch auf die Sitzung nicht das Hinzufügen Benutzer vor dem Festschreiben (db.session.add(user)
).
Wie d o Ich aktualisiere den Datensatz?
OK, das macht Sinn. Ich habe eine Überprüfung hinzugefügt, ob die Anfrage-Methode GET war und Felder nur anfänglich ausfüllen, wenn dies der Fall ist. Dann validiere ich nur auf POST-Methode. Scheint jetzt größtenteils gut zu funktionieren. Vielen Dank! – Dan