我试图在使用带有用户输入数据的SQLAlchemy中更新多行。我正在查询Unique_Key以选择要编辑的行。我试图编辑的三列是:Content, Link and Price,但是每次我试图更新行时,都会得到相同的错误:
AttributeError:“InstanceState”对象没有属性“_post_inspect”
我的代码如下,任何帮助都是非常感谢的,我也是一个新手程序员,所以我为我可怕的代码提供了支持。
DB模型
class wl(db.Model):
username_wl = db.Column(db.String(20), nullable=False)
id = db.Column(db.Integer, primary_key=True)
content = db.Column(db.String(200), nullable=False)
price = db.Column(db.String(200), nullable=False)
link = db.Column(db.String(200), nullable=False)
date_created = db.Column(db.DateTime, default=datetime.utcnow)更新路由
@app.route('/update/<int:id>', methods=['GET', 'POST'])
def Update(id):
item = wl.query.get_or_404(id)
if request.method == "POST":
content = request.form.get('content')
link = request.form.get('link')
price = request.form.get('price')
db.session.query(item).update(values={'price': price}) # Where the error is occuring
db.session.query(item).update(values={'content': content})
db.session.query(item).update(values={'link': link})
#
db.session.commit()
return redirect('/index')
else:
return render_template('/update.html', item=item)<form action="/update/{{item.id}}" method="POST">
<input type="text" name="content" id="content" value="{{item.content}}" placeholder="Item Name">
<input type="text" name="link" id="link" value="{{item.link}}" placeholder="Link">
<input type="text" name="price" id="price" value="{{item.price}}" placeholder="Price">
<input type="submit" value="Update">
</form>发布于 2022-07-28 08:10:11
如果我正确理解了您的代码,您将在这一行代码中选择要更新的所有项:
item = wl.query.get_or_404(id)因此,item是模型对象的list。但是update()方法是sqlalchemy查询对象的一个属性。可以按以下方式更新行,而项目是您的db.model类:
@app.route('/update/<int:id>', methods=['GET', 'POST'])
def Update(id):
item = Item.query.filter(Item.id == id)
if request.method == "POST":
content = request.form.get('content')
link = request.form.get('link')
price = request.form.get('price')
item.update(values={'price': price, 'content': content, 'link': link})
db.session.commit()
return redirect('/index')
else:
return render_template('/update.html', item=item.all())https://stackoverflow.com/questions/73147550
复制相似问题