如何将模板中的动态表传递给我的视图以迭代地将它们保存到我的数据库中
Posted
技术标签:
【中文标题】如何将模板中的动态表传递给我的视图以迭代地将它们保存到我的数据库中【英文标题】:How I can pass a dynamic table in template to my view to save them to my database iteratively 【发布时间】:2016-03-18 18:15:44 【问题描述】:我想在我的模板中传递存储在表中的所有数据。该表根据用户的选择而增长。我的项目是关于食品订购系统的,我想做的是,当用户将菜单添加到其购物篮并下订单时,我如何将值传递给我的视图以将它们保存到我的数据库中。我知道表格,但我的桌子不是静态的。我无法想象它会有多大。
我的添加行函数:
$(document).ready(function()
var sum = 0;
$(document).on('click', '.myaddButton', function()
var $foodname = $(this).closest("tr") // Finds the closest row <tr>
.find(".nr") // Gets a descendent with class="nr"
.text();
var $foodprice = $(this).closest("tr") // Finds the closest row <tr>
.find(".rn") // Gets a descendent with class="nr"
.text();
$('#carttable').prepend("<tr class='danger' id ='myTableRow'><td>"+$foodname+"</td><td class='price'>"+$foodprice+"</td> <td> <button class='deletebutton btn btn-danger' type='button'> <span class='glyphicon glyphicon-trash'></span> </button> </td></tr>");
);
$(document).on('click', '.deletebutton', function()
$('#myTableRow').remove();
//$('.price').each(function()
// var $price = $(this);
//console.log($price);
//sum += parseInt($price.context.innerhtml);
//);
//$('#total').html(sum);
//sum = 0;
);
);
</script>
我的桌子
<table border="1" class="table" id="menutable" name="menutable">
<tr class="danger">
<tbody>
%for a in list%
<tr class= % DoRandom %>
<td><b> a.name</b> </td>
<td class="nr">a.description</td>
<td class="rn"><p>a.price</p></td>
<td id="addbutton" > <button class="myaddButton btn btn-success" type="button">
<span class="glyphicon glyphicon-plus"></span> </button> </td>
</tr>
%endfor%
</tbody>
</table>
【问题讨论】:
你尝试过表单集吗? 【参考方案1】:如果你想使用更高一点的表单处理技术,那么你应该看看问题Making a Django form class with a dynamic number of fields...
第二个“简单”解决方案是将隐藏的输入值(将包含 food_id 和数量)与name
和price
(在前置期间)一起添加,并将表格包装在表格中。例如
var $food_id = ... // some how get food id
var $quantity = 1; //1 for now, but you can add increase and decrease functionality
...
// in prepend text
... + "<input type='hidden' name='food-" + $food_id + "' value='" + $quantity + "' >" + ...
在您的模板中,您应该在<table>
之前添加<form>
(并在</table>
标签之后添加</form>
),或者如果您使用的是ajax,请使用serialize。
第三种解决方案是使用 JS 对象作为购物车,并在提交表单之前将其编码为 Json。例如
//in your javascript global scope
var js_food_cart = ;
....
// then on click
$food_id = ... ;// yes, again you need food id
$quantity = 1; // or something elese
js_food_cart[$food_id] = $quantity;
....
// then somwhere in before submit, code assumes that you have form with my_cart hidden input
$('input[name=my_cart]') = JSON.stringify(js_food_cart);
那么在视图中,您应该解析 my_cart
输入的 json 值。在模板中,您应该添加带有隐藏字段的表单以传递购物车值。
如果您要实现增加/减少食物量的能力,这种方法会更方便。
【讨论】:
【参考方案2】:谢谢,我通过将我的食物对象转换为 json 并通过 AJAX 发布来解决了这个问题。
【讨论】:
以上是关于如何将模板中的动态表传递给我的视图以迭代地将它们保存到我的数据库中的主要内容,如果未能解决你的问题,请参考以下文章
在 Material UI 中,如何动态地将颜色传递给我的样式?
我如何从模型中获取字段并计算一些字段并将它们传递给我的模板?