问题描述
我遇到问题,我正在使用2个库: django-autocomplete-light 和 django-dynamic-formset .两位非常擅长做他们的工作.第一个用于自动完成,第二个用于使django表单集动态化.但是,当您想加入这2个问题时,就会出现问题.问题图片
I have a problem and I am using 2 libraries : django-autocomplete-light and django-dynamic-formset.The 2 are very good at doing their job.The first is used to do autocomplete and the second to make django formsets are dynamic.but when you want to join these 2 a problem occurs.Image of the problem
创建新字段时,将以这种方式添加它.
when a new field is created, it is added in that way.
模板:
{% extends 'base/base.html' %}
{% load static %}
{% block titulo%} Registrar venta {%endblock%}
{% block contenido %}
<div class="col-md-12">
<form method="post">{% csrf_token %}
<div class="col-md-4 form-group">
<label class="font-weight-bold" for="{{form.cliente.name}}">{{form.cliente.label}}</label>
{{form.cliente}}
</div>
<h4 class="text-left">Detalle de venta: </h4>
<div class="table-responsive-sm">
<table class="table" id="tablaDetalle">
{{ detalleformset.management_form }}
<thead class="thead-dark">
<th>Producto</th>
<th width="100px">Cantidad</th>
<th width="115px">Prec.Unit.</th>
<th width="115px">Subtotal</th>
<th>Acción</th>
</thead>
<tbody>
{% for form in detalleformset.forms %}
<tr class="formset_row">
{% for field in form.visible_fields %}
<td>
{# Include the hidden fields in the form #}
{% if forloop.first %}
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
{% endif %}
{{ field.errors.as_ul }}
{{ field }}
</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="row justify-content-md-end">
<div class="col-md-2">
<label class="font-weight-bold" for="{{form.total.name}}">{{form.total.label}}</label>
{{form.total}}
</div>
</div>
<div class="form-group">
<label class="font-weight-bold" for="{{form.descripcion.name}}">{{form.descripcion.label}}</label>
{{form.descripcion}}
</div>
<div class="col-md-4 offset-md-4">
<button class="btn btn-block btn-lg btn-primary" type="submit"><span><i class="fa fa-shopping-cart"></i>
</span>Registrar venta</button>
</div>
</form>
</div>
{% endblock %}
{% block javascript %}
<script type="text/javascript" src="{% static 'admin/js/vendor/jquery/jquery.js' %}"></script>
{{ detalleformset.media }}
<script src="{% static 'js/jquery.formset.js' %}"></script>
<script type="text/javascript">
$('.formset_row').formset({
addText: 'Agregar Producto',
deleteText: 'remover',
prefix: 'detalleventa'
});
$("#tablaDetalle").on("focus keyup", "tr", function(){
var total = 0;
var row = $(this).closest("tr");
var cantidad = parseInt(row.find("input:eq(2)").val());
var precio = parseFloat(row.find("input:eq(3)").val());
var subtotal = cantidad * precio;
row.find("input:eq(4)").val(isNaN(subtotal) ? "" : subtotal.toFixed(2));
$(".subtotal").each(function () {
var stval = parseFloat($(this).val());
total += isNaN(stval) ? 0 : stval;
});
$('.delete-row').click(function(){
var $fila = $(this).parents('tr');
var valsub = parseFloat($fila.find('input:eq(4)').val());
new Promise(function(done){
total -= isNaN(valsub) ? 0 : valsub;
$('.total').val(total.toFixed(2));
done();
})
.then(function(){
$fila.find('input:eq(4)').val(0);
})
});
$('.total').val(total.toFixed(2));
});
</script>
{% endblock %}
有什么办法可以解决这个问题?我正在阅读,几乎没有信息
Is there any way to fix this? I was reading and there is little information
推荐答案
我最近在同时使用django-autocomplete-light
和django-dynamic-formset
插件时遇到了同样的问题.我发现的解决方案是在初始化表单集之前(即在打开<form>
标记之前)将{{ detalleformset.media }}
移动到.那为我解决了这个问题,并使其不再创建那些多余的不可点击的自动完成字段.
I had the same problem recently using django-autocomplete-light
and the django-dynamic-formset
plugin together. The solution I found is to move the {{ detalleformset.media }}
to before you initialize the formset, i.e. before your opening <form>
tag. That solved the problem for me and made it so that those extra unclickable autocomplete fields were no longer created.
这篇关于使用django-autocomplete-light添加更多字段时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!