我使用django动态formset和ajax来清理库存。当我添加表单时,如何让ajax在新表单上进行更改?
动态表单集添加表单
$('#form-inline tbody tr').formset({
addText: 'add link',
deleteText: 'remove',
prefix: 'ptpositions'
});
我在ajax中循环表单,但我不认为这是一个好方法。
$(document).ready(function(){
{% for forms in formset %}
$(".{{forms.stock.value}}").change( function(){
var symbol = $(".{{forms.stock.value}} option:selected").text();
{% endfor %}
{% for forms in formset %}
$.ajax({
url: "{% url 'inventory:get_position' ptinventory_obj.id date %}",
type: "GET",
data: { 'product': product },
datatype: 'json',
success: function(data) {
$(".{{forms.id.value}}_ouput").html(data.price);
}});
{% endfor %}
});
})
现在如果我添加表单,那么ajax就不起作用了。
编辑
现在我只循环一次,但结果是相同的
$(document).ready(function(){
{% for forms in formset %}
$(".{{forms.stock.auto_id}}").change( function(){
var symbol = $(".{{forms.stock.auto_id}} option:selected").text();
$.ajax({
url: "{% url 'inventory:get_position' ptinventory_obj.id date %}",
type: "GET",
data: { 'product': product },
datatype: 'json',
success: function(data) {
$(".{{forms.inventory.auto_id}}").html(data.price);
}});
});
{% endfor %}
})
我发现的主要问题可能是输出......当我添加一个表单时。没有输出显示。不知道为什么......
我现在意识到新创建的表单有None类,这意味着在保存之前form.id.value是none。内联位置尚未创建。如何将id保存给尚未保存的formset实例?
已编辑
好的,我知道问题是什么,但不知道如何解决它 每次我都在表格中添加一个新表格
{% for forms in formset %} {{ forms.id }}
<tr class="dynamic">
<td style="width:100px" class="{{forms.stock.auto_id}}">{{ forms.stock.errors }} {{ forms.stock}}{{forms.stock.fields.auto_id}}
</td>
<td style="width:100px">{{ forms.inventory.errors }} {{ forms.inventory}}
</td>
&#13;
问题是添加的新表单{{forms.stock}}有一个新ID 但如果我使用{{forms.stock.auto_id}} id不会改变...而不是它将永远是所有新表格的id_ptposition-1-stock。如何使用django标签获取id_ptposition-2-stock?
答案 0 :(得分:0)
你的代码有2个循环,看起来它应该只是一个
$(document).ready(function(){
{% for forms in formset %}
$(".{{forms.stock.value}}").change( function(){
var symbol = $(".{{forms.stock.value}} option:selected").text();
$.ajax({
url: "{% url 'inventory:get_position' ptinventory_obj.id date %}",
type: "GET",
data: { 'product': product },
dataType: 'json',
success: function(data) {
$(".{{forms.id.value}}_ouput").html(data.price);
}
});
});
{% endfor %}
});