遇到问题

// 前端js操作csv文件插件用法    插件下载地址:https://github.com/okfn/csv.js/
 $('#id_mac_file').change(function () {
            $('#id_mac_address').parent().next().text('');
            $('input[type=checkbox]')[0].checked = false;
            if (!(window.File || window.FileReader || window.FileList || window.Blob)) {
                 alert('请使用Chrome浏览器!');
             }
            var mac_str='';
            var files = $('input[name="mac_file"]').prop('files');//获取到文件列表
            if (files.length === 0) return;
            var reader = new FileReader();//新建一个FileReader
            reader.readAsText(files[0], "gbk");//读取文件
            reader.onload = function(evt){ //读取完文件之后会回来这里
                var fileString = evt.target.result;
                var a = CSV.parse(fileString, {
                    header: ['mac']
                });      
                a.shift(); // 去a列表的第一个元素
                for (var i=0; i < a.length; i++ ){
                  mac_str = mac_str + a[i][0]+'\r\n'
                }
                $('#id_mac_address').val(mac_str)
                $('#id_nums').val(a.length)
            }
    })
    
# 这个是在没有直接关联的几张表中四个字段按与的关系搜索(采用的是集合方式完成此功能的)
    if request.method == 'POST':
        mac_address = request.POST.get('mac_address')
        date_rang = request.POST.get('date_rang')
        Audit_status = request.POST.get('Audit_status')
        model = request.POST.get('model')
        if request.mac.user.depart_id.all()[0].department_name == '系统管理部门':
            notice_query = models.Notice.objects.all().order_by('-delivery_date')
        else:
            notice_query = models.Notice.objects.filter(user=request.mac.user).order_by('-delivery_date')
        set_list = []
        mac_set = set()
        if mac_address:
            for i in notice_query:
                if mac_address in i.mac_address.split('\r\n'):
                    mac_set.add(i)
                    break
            set_list.append(mac_set)
        date_set = set()
        if date_rang:
            date_start = date_rang.split(' - ')[0]
            date_end = date_rang.split(' - ')[1]
            date_start = datetime.strptime(date_start, '%Y-%m-%d')
            date_end = datetime.strptime(date_end, '%Y-%m-%d')
            for i in notice_query:
                if i.delivery_date.replace(tzinfo=None) >= date_start and i.delivery_date.replace(tzinfo=None) <= date_end:
                    date_set.add(i)
            set_list.append(date_set)
        status_set = set()
        if Audit_status and Audit_status == '待处理' or Audit_status == '备货中':
            if Audit_status == '待处理':
                Audit_status = 0
            else:
                Audit_status = 1
            for i in notice_query:
                if Audit_status == i.status:
                    status_set.add(i)
            set_list.append(status_set)
        model_set = set()
        if model:
            mac_query = models.Macs.objects.filter(model=model).values_list('mac')
            mac_lst = []
            for i in mac_query:
                mac_lst.append(i[0])
            for i in notice_query:
                for y in i.mac_address.split('\r\n'):
                    if y in mac_lst:
                        model_set.add(i)
            set_list.append(model_set)
        res = None
        a = 0
        for i in set_list:
            if a == 0:
                res = i
            else:
                res = res & i
            a += 1
        notice_query = res
        print(type(res))

 

posted @ 2020-07-13 12:09  高汤  阅读(160)  评论(0编辑  收藏  举报