从url中拆分字符串值并在Django QuerySet中使用它

时间:2015-04-20 05:55:47

标签: jquery python django

这是应该发送到服务器以进行查询的数据:

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)

1 个答案:

答案 0 :(得分:0)

我猜你无法沿逗号分割的原因是逗号转换为%2C。首先,您需要清理请求中收到的参数。可以这样做:

import urllib
get_bldg_type = urllib.unquote(request.GET.get('bldg_type'))

另外,如果您根据请求中收到的参数过滤结果,我建议通过GET进行POST。

希望这有帮助。