python—当选择的第一个字段的值发生变化时,是否有一种过滤字段的方法?

vc9ivgsu  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(124)

~希望你们都做得很好。我想知道是否可以使用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>

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题