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