1、问题
我想在前端传递不特定字段到后端,比如数据库中有user表有一个姓名字段和一个电话字段,我前端做一个选择下拉框,然后将姓名字段名和电话字段名放在下拉框中
下图为前端时间的代码示例
<select name="select_sjlx" class="form-control" style="float:left;width:120px;margin-right:5px;">
<option value="none">时间类型</option>
{% for k in sj %}
<option value={{ sj[k] }}>{{ k }}</option>
{% endfor %}
</select>
<input name="entryDatestart" placeholder="起始日期" id="entry-date-start"
type="text" style="float:left;width:100px;margin-right:5px;" v-model="lookupType" class="form-control">
<input name="entryDatestop" placeholder="终止日期" id="entry-date-stop"
type="text" style="float:left;width:100px;margin-right:5px;" v-model="lookupType" class="form-control">
时间类型为选择框,加入有两个变量,我现在通过name属性将时间类型的value值传递到后端。
queryParams: function queryParams(params) { //设置查询参数
var param = {
'pageNumber' : params.pageNumber,
'pageSize' : params.pageSize,
'select_sjlx':$("#select_sjlx").val(),
'entryDatestart':$("#entryDatestart").val(),
'entryDatestop':$("#entryDatestop").val(),
'select_cxkm':$("#select_cxkm").val(),
'lookupcontent':$("#lookupcontent").val()
//keyword:params.search,
};
后端接收数据代码如下:
pageNumber=request.args.get('pageNumber',default=1, type=int)
pageSize = request.args.get('pageSize', default=30, type=int)
select_sjlx = request.args.get('select_sjlx')
entryDatestart = request.args.get('entryDatestart')
entryDatestop = request.args.get('entryDatestop')
查询字符串如下:
if select_cxkm == 'ZF_id':
rows = current_user.query.filter(User.字段名.ilike('%'+ lookupcontent +'%')).paginate(
page=pageNumber,
per_page=pageSize,
error_out=False
)
问题是:如何把查询字符串中的字段名更换为接受到的变量,变量名其实也是字段名,但是是字符串的格式。
我尝试用
b = 'id'
a= 'User.query.filter_by('+b+'=1).first()'
a
'User.query.filter_by(id=1).first()'
的方式处理,但是这个查询语句是一个字符串,怎么转换为查询语句