简而言之,我该如何
var="TableName"
models.var.query.all()
解释
我的目标是允许用户更改项目列表的顺序。
我设置了一个ajax调用,它将一个id的数组发送到下面的api
如果我对查询进行硬编码,并且每个表都有一个api视图,它就可以工作
我的问题是我希望“表格”填写这一行
models.table.query.filter_by(id=item).first()
完成查询。
这里是视图api,它给出了一个错误“无属性'表'”
@app.route('/order/<table>')
def order(table):
# import pdb;pdb.set_trace()
sortedItems = request.args.listvalues()[0]
o=1
import pdb;pdb.set_trace()
for item in sortedItems:
grab = models.table.query.filter_by(id=item).first()
grab.order=o
o=o+1
db.session.commit()
return jsonify(result=sortedItems)
答案 0 :(得分:3)
您可以使用getattr()
:
>>> var = 'table_name'
>>> table = getattr(models, var)
>>> table.query.filter_by(id=item).first()
如果您尝试获取的属性不存在,则 getattr()
会引发AttributeError
。
order()
- 函数示例:
@app.route('/order/<table>')
def order(table):
sortedItems = request.args.listvalues()[0]
o=1
table = getattr(models, table)
for item in sortedItems:
grab = table.query.filter_by(id=item).first()
grab.order=o
o=o+1
db.session.commit()
return jsonify(result=sortedItems)