Django 批量修改数据

网上搜了好多关于批量修改数据的方法,可能我基础很差,没咋看懂,所以决定用自己的想法实现,我也不知道能不能算是批量修改,但是最终的效果是我想要的,应该算是吧。
我的大体思路是这样的:先获取模态框里的值,然后把值填入到所勾选的数据相对应的字段里。因为是批量对数据操作,所以勾选数据的功能是必不可少的,勾选每一行获得的id进行编辑,然后把勾选的id放入一个数组,注意,这里的id集存到数组的时候,会变为这样的形式['1,2,3'],这样子不便于后面的遍历查找相同id的数据,所以需要使用split()方法处理一下,等处理好了之后,通过遍历查找相同id的数据;然后是获取模态框的值,获取完成之后也是存在一个数组里面。要是两个数组(一个是勾选id的id集的数组,一个是获取模态框值得数组)的值都没有什么问题的话,就可以利用ajax传到后台使用了。

从前端模态框中获取值(form表单):

function 函数名(){
    var customer = new Array()  // 定义一个数组
    productExpress = document.updateForms.productExpress.value; // 前端模态框中的值,form表单中对应的name在下图,可以对应着看。vlue就是取它将要或者已经输入的值。下面4个同理
    productName = document.updateForms.productName.value;
    productTel = document.updateForms.productTel.value;
    productOdd = document.updateForms.productOdd.value;
    productAddress = document.updateForms.productAddress.value;
    customer[0] = productExpress;  // 取出的值放入数组的位置
    customer[1] = productOdd;
    customer[2] = productName;
    customer[3] = productTel;
    customer[4] = productAddress;
    console.log(customer);
    $.ajax({
        type: 'post',
        url: '/obtain/',
        traditional: true,
        dataType: 'json',
        data:{'customer':customer},  // 利用ajax将已定义并且有值的数组传递到后台
    });
}

这是前端模态框,可以对应着上图看:

<form method="post" name="updateForms" >
       <div class="form-group">
	       <label for="productExpress"  class="control-label">这是productExpress:</label>
	       <input type="text" name="productExpress"  class="form-control"/>
       </div>
       <div class="form-group">
            <label for="productOdd"  class="control-label">这是productOdd:</label>
            <input type="text" name="productOdd"  class="form-control"/>
       </div>
       <div class="form-group">
            <label for="productName"  class="control-label">这是productName:</label>
            <input type="text" name="productName"  class="form-control"/>
       </div>
       <div class="form-group">
            <label for="productTel"  class="control-label">这是productTel:</label>
            <input type="text" name="productTel"  class="form-control"/>
       </div>
       <div class="form-group">
            <label for="productAddress"  class="control-label">这是productAddress:</label>
            <input type="text" name="productAddress"  class="form-control"/>
       </div>
       <input type="hidden" name="productId" value="0"/>
       <input type="hidden" name="currentPage" value="1"/>
       <input type="hidden" name="pageSize" value="10"/>
</form>

然后就是后台处理ajax传过来的值:

def edit_data(request):
    information = request.POST.getlist('customer')  # 在这里接收ajax传过来的值
    global component_a
    for i in component_a:
        updateResult = models.Product.objects.filter(product_id=i).update(product_express=information[0],product_odd=information[1],
                                                                          product_name=information[2],product_tel=information[3],
                                                                          product_address=information[4],)
        request.GET.get('product_id')
    return render(request, 'index_b.html')

这个方法可能很low,但是最起码是实现了我想要的效果。如果哪儿有不对的地方,还请各位大佬指出改正。

你可能感兴趣的:(Django,Python,ajax,javascript,python)