0
我沒有收到任何錯誤,它只是沒有更新記錄。我編輯的用戶記錄和保存單個字段(我不能使用populate_obj()
因爲我只更新有選擇的幾個領域,但db.session.commit()
之後,它仍然沒有更新表。SQLAlchemy沒有更新記錄
@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)
它甚至重定向閃爍它更新了記錄,但沒有任何消息由sqlachemy寫入mysql數據庫。
添加db.session.flush()
commit()
後沒什麼區別,也沒有提交(db.session.add(user)
)之前,將用戶添加到會話。
如何d o我更新了記錄?
好吧,這是有道理的。我添加了一個檢查,如果請求方法是GET,並且只在最初填充字段(如果有的話)。然後我只驗證POST方法。似乎現在工作大多都很好。謝謝! – Dan