考虑这个用户类(直接来自flask-sqlalchemy docs):
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, username, email):
self.username = username
self.email = email
def __repr__(self):
return '<User %r>' % self.username
数据表发出ajax请求并填充表。然后每个td都可以在jeditable的情况下编辑。一旦修改了td,jeditable就会向localhost / modify发出POST请求,其中包含:
现在,我希望在处理localhost / modify的函数中我获取行id,创建用户对象并查询该特定行的db,查看需要修改的属性,使用new修改它值并提交给db。这是我到目前为止所得到的:
@app.route('/modify', methods=['GET', 'POST'])
def modify()
if request.method == 'POST' :
user = user.query.get(form.row_id)
if form.column_id == int(0):
user.id = form.value
elif form.column_id == int(1):
user.username = form.value
elif form.column_id == int(2):
user.email = form.value
else:
pass
db.session.commit()
return 'ok'
这样,是的确有效,但必须有更好的方法。这个似乎不太...... pythonic
米哈伊
答案 0 :(得分:2)
使用列ID的地图来命名属性。
colmap = {
0: 'id',
1: 'username',
2: 'email',
}
@app.route('/modify', methods=['GET', 'POST'])
def modify()
if request.method == 'POST' :
user = user.query.get(form.row_id)
try:
setattr(user, colmap[form.column_id], form.value)
except KeyError:
pass
db.session.commit()
return 'ok'