这是应该发送到服务器以进行查询的数据:
http://127.0.0.1:8000/cnt_bldg/?brgy_id=All&bldg_type=School%2CSport+Center%2FGymnasium%2FCovered+Court%2C
brgy_id=All
bldg_type=School%2CSport+Center%2FGymnasium%2FCovered+Court%2C
正如您所注意到的,bldg_type
有两个值是"学校"和"体育中心/体育馆/有盖法院"在其中用逗号分隔,您可以参考下面的Jquery代码:
var selected = $('#bldg_type option:selected');
var items = "";
selected.each(function () {
items += $(this).val() + ",";
});
$.ajax({
url: "cnt_bldg/",
type: "GET",
dataType: "JSON",
data: {
'brgy_id': brgy_id,
'bldg_type': items
},
...
我想根据这些值创建一个查询。到目前为止尝试了这一点,首先是分割值并执行循环并附加列表。这是我的尝试:
...
args = []
get_bldg_type = request.GET.get('bldg_type')
...
if get_bldg_type != '':
sp = [x.strip() for x in get_bldg_type.split(',')]
for term in sp:
args.append(Q(bldg_type=term))
for myid in ids_high:
getgeom = FloodHazard.objects.get(id=myid).geom
response_high = list(PolyStructures.objects.filter(geom__within=getgeom, *args).values(
'bldg_type','bldg_name').annotate(count=Count('bldg_name')))
for entry in response_high:
entry['type'] = 'High'
to_json.append(response_high)
答案 0 :(得分:0)
我猜你无法沿逗号分割的原因是逗号转换为%2C。首先,您需要清理请求中收到的参数。可以这样做:
import urllib
get_bldg_type = urllib.unquote(request.GET.get('bldg_type'))
另外,如果您根据请求中收到的参数过滤结果,我建议通过GET进行POST。
希望这有帮助。