我正在将PostgreSQL与sqlalchemy一起使用。因此,我有一个flask应用程序,它可以创建和更新实验室,但是每次执行db.session.commit()时,要更新的数据都会被推送到列表的末尾。例如,假设我将实验室订购为
然后,我想将Circuits的实验室标题编辑为Circuits 101 Lab。在db.session.commit()之后,顺序变为
这不是我想要的,不应该将Circuits 101放在列表的顶部,而不应该推到最后。
到目前为止我尝试过的是:
我试图通过Google搜索此问题,并且堆栈溢出,但找不到与此类似的帖子。我什至尝试在python控制台中运行更改,然后提交更改以查看订单是否更改,并且订单仍然更改。
例如:
labs = Lab.query.all() # Gets the list of all labs
lab = labs[0] # get the first element
lab.title = "Circuits 202" # Change title
db.session.commit() # commit the changes
提交后顺序仍然更改
这是我下面的代码。提交后,更新的项目似乎被推到了最后。
# Update route
@labs.route('/labs/<int:lab_id>/update', methods=['GET', 'POST'])
def lab_update(lab_id):
lab = Lab.query.get_or_404(lab_id)
form = LabForm()
if form.validate_on_submit():
lab.title = form.title.data
lab.time = form.time.data
lab.summary = form.summary.data
db.session.commit()
flash('Your Subject has been updated!', 'success')
return redirect(url_for('labs.lab_show', lab_id=lab.id))
elif request.method == 'GET':
form.title.data = lab.title
form.time.data = lab.time
form.summary.data = lab.summary
return render_template("views_lab/lab_update.html", title='Update Lab', form=form)
我希望数据在编辑时会保留在同一位置,但会被推送到末尾。