故障管理系统--select两级联动查询

  写故障管理系统时,根据主类-平台进行故障搜索,需要用到select两级联动查询

    我前端技术纯菜鸟,请教了个水平高的同事才搞定,所以记录下来,以免以后再忘了

    前端html    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
< form  id = "tab"  class = "form-inline"  role = "form"  action = '/search/'  method = 'GET'  style = "float:right;margin-top:-48px;margin-right:0px;" >
         <!--<div class="panel-heading">-->
         < div  class = "form-group" >
         < select  class = "form-control"  name = "Program"  id = "se_program" >
         < option  value = "test_program" >请选择主类</ option >
         {% for val  in search %}
             < option  value = "{{ val }}"  {% if val == query %}selected{% endif %}>{{ val }}</ option >
         {% endfor %}
         </ select >
         < select  class = "form-control"  name = "PlatForm"  id = "se_platform" >
         < option  value = "test_platform" >请选择平台</ option >
         </ select >
         </ div >
          < button  class = "btn btn-primary"  type = "submit" >< i  class = "fa fa-save" ></ i >search</ button >
         <!--</div>-->
         </ form >
< script  type = "application/javascript" >
     $(document).ready(function() {
       $('#se_program').change(function () {
           se_program = $('#se_program').val();
           data = {se_program: se_program};
           $.ajax({
               url:"/liandong/",
               data:data,
               type:'post',
                   success: function(platform){
                   $("#se_platform").empty();
                   $("#se_platform").append("< option  value = 'test_platform' >"+"请选择平台"+"</ option >");
                   $.each(platform,function(i){
                   $("#se_platform").append("< option  "+"value=\""+platform[i]+"\">"+platform[i]+"</ option >")
                      })
               }
           })
       })})
</ script >

django后端view

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
def  search(request,page):
     """
     搜索view,接收前端传来的主类名,匹配数据库获得数据,返回给前端,自定义分页
     """
     check_Program = request.GET[ 'Program' ]
     check_PlatForm = request.GET[ 'PlatForm' ]
     check_Program = check_Program.encode( "utf-8" )
     check_PlatForm = check_PlatForm.encode( "utf-8" )
     if  check_Program  = =  'test_program' :
         return  HttpResponseRedirect( '/index/' )
     if  check_Program ! =  'test_program'  and  check_PlatForm = = 'test_platform' :        
         ch_result  =  FaultReports.objects. filter (Program  =  check_Program)
         plat = FaultReports.objects.values_list( 'PlatForm' ,flat = True ). filter (Program  =  check_Program)
         plat = set (plat)
         if  ch_result:
             islogin = False
             page = gb001.try_int(page,  1 )
             totalitems = FaultReports.objects. filter (Program  =  check_Program).count()
             pageInofobj = html.PageInfo(page,totalitems)
             pager = html.Search_Program_page( '/search/' ,page,pageInofobj.TotalPage(),check_Program)
             all_data = FaultReports.objects. filter (Program  =  check_Program).order_by( "-id" )[pageInofobj.From():pageInofobj.To()]
             data = FaultReports.objects.values_list( "Program" ,flat = True )
             data = set (data)
             try :
                 islogin = request.session[ 'islogin' ]
             except  Exception,e:
                 pass
             if  islogin:
                 name  = request.session[ 'username' ]
                 return  render_to_response( 'search.html' ,{ 'login_user' :name, 'pager' :pager, 'result' :all_data, 'search' :data, 'query' :check_Program, 'plat' :plat})
             else :
                 return  HttpResponseRedirect( '/login/' )
     else :
         ch_result  =  FaultReports.objects. filter (Program  =  check_Program,PlatForm = check_PlatForm)
         plat = FaultReports.objects.values_list( 'PlatForm' ,flat = True ). filter (Program  =  check_Program)
         plat = set (plat)
         print  plat
         if  ch_result:
             islogin = False
             page = gb001.try_int(page,  1 )
             totalitems = FaultReports.objects. filter (Program  =  check_Program,PlatForm = check_PlatForm).count()
             pageInofobj = html.PageInfo(page,totalitems)
             pager = html.Search_Program_page( '/search/' ,page,pageInofobj.TotalPage(),check_Program,check_PlatForm)
             all_data = FaultReports.objects. filter (Program  =  check_Program,PlatForm = check_PlatForm).order_by( "-id" )[pageInofobj.From():pageInofobj.To()]
             data = FaultReports.objects.values_list( "Program" ,flat = True )
             data = set (data)
             try :
                 islogin = request.session[ 'islogin' ]
             except  Exception,e:
                 pass
             if  islogin:
                 name  = request.session[ 'username' ]
                 return  render_to_response( 'search.html' ,{ 'login_user' :name, 'pager' :pager, 'result' :all_data, 'search' :data, 'query' :check_Program, 'query_platform' :check_PlatForm, 'plat' :plat})
             else :
                 return  HttpResponseRedirect( '/login/' )
1
2
3
4
5
6
7
8
9
10
11
12
13
def  liandong(request):
     if  request.method  = =  'POST' :
         data = request.POST.get( 'se_program' )
         print  request.POST
         PlatFormList = []
         contents  =  FaultReports.objects. filter (Program = data)
         for  line  in  contents:
             if  PlatFormList.count(line.PlatForm)  = = 0 :
                 PlatFormList.append(line.PlatForm)
         platform  =  PlatFormList
         #platform=set(platform)
         #print platform
         return  HttpResponse(json.dumps(platform),content_type = "application/json" )

出处:http://blog.51cto.com/6252961/1687584

猜你喜欢

转载自blog.csdn.net/jackliu16/article/details/80740237