Javascript django:将表单添加到模板中的formset会导致问题

Javascript django:将表单添加到模板中的formset会导致问题,javascript,python,html,django,Javascript,Python,Html,Django,我知道这类问题在这里反复出现,我已经搜索了好几个小时来寻找答案,但这似乎无法解决问题 我有一个表单集,用户可以在其中动态添加表单。当只有表单时,表单集工作得很好,但是当用户添加表单时,这个新添加的表单不会保存在数据库表中,这让我认为添加按钮有问题。我有限的编程技能,尤其是Javascript,使我无法进一步了解正在发生的事情 以下是我的看法: def New_Sales(request): #context = {} form = modelformset_factory(his

我知道这类问题在这里反复出现,我已经搜索了好几个小时来寻找答案,但这似乎无法解决问题

我有一个表单集,用户可以在其中动态添加表单。当只有表单时,表单集工作得很好,但是当用户添加表单时,这个新添加的表单不会保存在数据库表中,这让我认为添加按钮有问题。我有限的编程技能,尤其是Javascript,使我无法进一步了解正在发生的事情

以下是我的看法:

def New_Sales(request):
    #context = {}
    form = modelformset_factory(historical_recent_data, fields=('Id', 'Date','Quantity', 'NetAmount'))
    
    
    if request.method == 'GET':
        formset = form(queryset= historical_recent_data.objects.none())
    elif request.method == 'POST':
        formset = form(request.POST)
        if formset.is_valid():
            
            
            
            
            for check_form in formset:
            
                quantity = check_form.cleaned_data.get('Quantity')
                id = check_form.cleaned_data.get('Id')
                update = replenishment.objects.filter(Id = id).update(StockOnHand = F('StockOnHand') - quantity)
                update2 = Item2.objects.filter(reference = id).update(stock_reel = F('stock_reel') - quantity)
                check_form.save()
            
            
        
            return redirect('/dash2.html') 
    
    #else:
        #form = form(queryset= historical_recent_data.objects.none())
        
    
    
    return render(request, 'new_sale.html', {'formset':formset})
以下是模板:

  <form method="POST" class="form-validate" id="form_set">
                      {% csrf_token %}
 
                 {{ formset.management_form }}
            
              
               <table  id="form_set" class="form"> 
                {% for form in formset.forms %}
            
                  {{form.non_field_errors}}   
        {{form.errors}}
    
              
             
         <table class='no_error'> 
    
        {% crispy form %}
    

        </table>
  {% endfor %}
        
        
            </table>
         
<div id="form_set" style="display:none">
    <table class='no_error'>
      {% crispy formset.empty_form %}
     </table>
 </div>

         </div>
          <br>
          <br>
          </form>
<button class="btn btn-success" id="add_more">Add</button>        
<button class="btn btn-primary" type="submit" form="form_set">Save</button> 
          
        </section>
      </div>
    </div>

     <footer class="footer">
        <div class="footer__block block no-margin-bottom">
          <div class="container-fluid text-center">
          <div class ="row text-center">
            
            <div class="col-lg-3">
                                <form id= "form_{{ language.code }}" action="{% url 'set_language' %}" method="post">{% csrf_token %}
                                <input type="hidden" name="text" value="{{ redirect_to }}">
                                <select name="language" id="">
                                    {% get_available_languages as LANGUAGES %}
                                    {% get_language_info_list for LANGUAGES as languages %}
                                    {% for language in languages %}
                                        <option value="{{ language.code }}" {% if language.code == LANGUAGE_CODE %} selected {% endif %}>
                                        {{ language.name_local }} ({{ language.code }})
                                        </option>
                                    {% endfor %}
                                </select>
                            <button type="submit" value="Go" class="learn_more2">Go</button>
                            </form>
            </div>
         
            <div class="col-lg-3">
              <p class="no-margin-bottom  align-items-center" >2020 &copy; Exostock.<a></a></p>
            </div>
             <div class="col-lg-3">
               <a href="mailto: contact@exostock.net"><span>Support</span></a>
            </div>
            
            </div>
          </div>
        </div>
        </footer>
      </div>
    </div>
    <!-- JavaScript files-->
    <script src="{% static 'vendor/jquery/jquery.min.js' %}"></script>
    <script src="{% static 'vendor/popper.js/umd/popper.min.js' %}"> </script>
    <script src="{% static 'vendor/bootstrap/js/bootstrap.min.js' %}"></script>
    <script src="{% static 'vendor/jquery.cookie/jquery.cookie.js' %}"> </script>
    <script src="{% static 'vendor/chart.js/Chart.min.js' %}"></script>
    <script src="{% static 'vendor/jquery-validation/jquery.validate.min.js' %}"></script>
    <script src="{% static 'js/charts-home.js' %}"></script>
    <script src="{% static 'js/front.js' %}"></script>
  </body>

</html>

<script type='text/javascript'>

$('#add_more').click(function() {
    var form_idx = $('#id_form-TOTAL_FORMS').val();
    $('#form_set').append($('#form_set').html().replace(/__prefix__/g, form_idx));
    $('#id_form-TOTAL_FORMS').val(parseInt(form_idx) + 1);
});

</script>

{%csrf_令牌%}
{{formset.management_form}
{formset.forms%%中表单的%
{{form.non_field_errors}}
{{form.errors}}
{%crispy form%}
{%endfor%}
{%crispy formset.empty_form%}


添加 拯救 {%csrf_令牌%} {%get_可用语言为语言%} {%get_language_info_list for LANGUAGES as LANGUAGES%} {%用于语言中的语言%} {{language.name_local}}({{language.code}}) {%endfor%} 去

2020&复制;Exostock。 $(“#添加更多”)。单击(函数(){ var form_idx=$('#id_form-TOTAL_FORMS').val(); $('#form_set')。追加($('#form_set').html()。替换(/#u prefix_u/g,form_idx)); $('id_form-TOTAL_FORMS').val(parseInt(form_idx)+1); });


屏幕上或日志中都没有输出错误,但我确信创建的表单有问题,因为只有原始表单进入db

很抱歉,您是否尝试多次显示一个表单?我尝试从表单集中显示一个表单,然后单击“添加”添加表单(来自同一表单集)按钮