0
このコードは、データベース内のpost_idに一致するポストを更新することになっています。しかし、それはテーブルのすべてのポストを更新します。SQLalchemyは1行ではなくすべての行を更新します
コードは正しく編集されているため、正しく動作します。
@app.route('/update/<post_id>', methods=['GET', 'POST'])
def update(post_id):
if 'username' not in session:
return redirect(url_for('login'))
post = Post.query.get(post_id)
form = PostForm(obj=post)
if request.method == 'POST':
if form.validate() == False:
return render_template('update.html', form=form)
else:
Post.query.filter(Post.post_id==int(post_id)).update(dict(
title=form.title.data, body=form.body.data))
db.session.commit()
return redirect(url_for('retrieve'))
elif request.method == 'GET':
return render_template('update.html', form=form, post_id=post_id)
class Post(db.Model):
__tablename__ = 'posts'
post_id = db.Column(db.Integer, primary_key=True)
author = db.Column(db.String(128))
title = db.Column(db.String(128))
body = db.Column(db.Text)
def __init__(self, author, title, body):
self.author = author
self.title = title
self.body = body
<form method="POST" action="/update/{{post_id}}">
変更を加えても機能しませんでした。クエリは0を返し、何も更新しません。 – wildExploit
'post_id'を整数として定義しているので、' post_id'の型をintに変更してください。私の更新をチェックしてください。 –
このエラーが発生しました: "ValueError:基数10のint()のリテラルが無効です: ''" –
wildExploit