首页 文章

只是django动态formset和ajax

提问于
浏览
0

我使用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 回答

  • 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 %}
    });
    

相关问题