DJANGO结合jQuery cxSelect 作二级菜单过滤

时间:2023-03-09 00:04:29
DJANGO结合jQuery cxSelect 作二级菜单过滤

EN,到这个阶段,基本功能算是完成了。

使用了jQuery cxSelect这个插件。

http://code.ciaoca.com/jquery/cxselect/

相关代码如下:

html:

<form class="uk-form" name="filter-form">
    <div id="element_id">
      项目:<select class="Site_name" name="Site_name"></select>
      组件:<select class="App_name" name="App_name"></select>
      <a class="filter_btn uk-button" name="filter_btn">过滤</a>
      </div>
 </form>

JS:

$('#element_id').cxSelect({
      url: '/version/filter_app/',
      selects: ['Site_name', 'App_name'],
      jsonName: 'name',
      jsonSub: 'value',
      nodata: 'none'
    });

views.py

def filterAppFromSite(request):
    app_list = []
    site_names = S.objects.all()
    for site_name in site_names:
        app_names = site_name.app_name.all()
        app_dict = {}
        a = []
        for app_name in app_names:
            c = {}
            c['name'] = str(app_name.name)
            a.append(c)
        app_dict['name'] = str(site_name.name)
        app_dict['value'] = a
        app_list.append(app_dict)
    return render_to_json_response(app_list)

实现:

DJANGO结合jQuery cxSelect 作二级菜单过滤

附一段通过MANYTOMANY检索语法:

从发布单倒追组件到项目,然后用ID IN功能检索多少条发布记录:

app_id_list = []
site = S.objects.get(name=self.kwargs['site_name'])
for app in site.app_name.all():
       app_id_list.append(app.id)

return DV.objects.filter(app_name_id__in=app_id_list)