~希望你们都做得很好。我想知道是否可以使用jquery、json和django表单进行多级过滤。
基本上,我想要它,所以让我们假设我先选择“客户”,然后“站点”应该根据它进行过滤,同时,如果我先选择站点,那么客户应该根据它进行过滤,当没有选择值时,所有字段都会重置。
我可以让它工作,只有当它过滤器的基础上一个,但当我选择网站首先我不能让它工作得很好…我计划在未来添加更多的领域也当我得到更好的概念!
这是我的密码。
views.py
def get_cascading(request):
cus_id = request.GET.get('cus_id',None)
site_id = request.GET.get('site_id',None)
if cus_id:
customer = Customer.objects.get(id=cus_id)
site = Site.objects.filter(customer=customer)
print(str(site))
else:
site = Site.objects.all()
if site_id:
site_cus = Site.objects.get(id=site_id)
cus_change = Customer.objects.filter(id=site_cus.customer.id)
else:
cus_change = Customer.objects.all()
context = {
'site':site,
'cus_change':cus_change
}
return render(request, 'ticket/cascading/index.html', context)
层叠html
{% if cus_id != 0 %}
<label for="id_site" class="">Site</label>
<select name="site" class="select form-control" id="id_site">
{% for obj in site %}
<option value="{{obj.id}}">{{obj.name}}</option>
{% endfor %}
</select>
{% elif site_id != 0 %}
<label for="id_customer" class="">Customer</label>
<select name="customer" class="select form-control" id="id_customer">
{% for obj in cus_change %}
<option value="{{obj.id}}">{{obj.name}}</option>
{% endfor %}
</select>
{% endif %}
主窗体jquery
<script type="text/javascript">
if($('#id_ticket_form-site').val() == 0)
{
$('#id_ticket_form-customer').change(function() {
var cus_id = $(this).val()
var url = '{% url "ticket:json-cascading" %}'.replace(0,cus_id)
$.ajax({
type: "GET",
url: url,
data: { "cus_id" :cus_id },
success: function (data) {
$("#div_id_ticket_form-site").html(data);
}
});
})
}
else
{
$('#id_ticket_form-site').change(function() {
var site_id = $(this).val()
var url = '{% url "ticket:json-cascading" %}'.replace(0,site_id)
$.ajax({
type: "GET",
url: url,
data: { "site_id" :site_id },
success: function (data) {
$("#div_id_ticket_form-customer").html(data);
}
});
})
}
</script>
暂无答案!
目前还没有任何答案,快来回答吧!