我使用django动态formset和ajax来chekc库存 . 当我添加表单时,如何让ajax在新表单上进行更改?
动态formset添加表单
$('#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 . 内联位置尚未创建 . 如何为尚未保存的formset实例提供id?
编辑
好吧,我想出了问题是什么,但不知道如何解决它每次我添加一个新的表单形式
{% 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>
问题是添加的新表单{}有一个新的id但如果我使用{},则id不会改变...而不是它总是id_ptposition-1-stock适用于所有新表格 . 如何使用django标签获取id_ptposition-2-stock?
1 回答
你的代码有2个循环,看起来它应该只是一个