编程语言
首页 > 编程语言> > javascript-具有即时过滤选项的Django ModelChoiceField

javascript-具有即时过滤选项的Django ModelChoiceField

作者:互联网

我正在制作一个具有3个班级的应用程序:员工,公司和部门.

当我编辑员工时,我需要了解他的公司,然后要了解所选公司的所有部门.但是,当我使用ModelChoiceField时,我会看到所有公司的所有部门.

这不是特权的问题.要验证部门字段,它必须是所选公司的部门.但是,我不想对此进行验证,我只需要显示在以上字段中选择的特定公司的部门即可.

由于它是客户端操作,因此我认为需要使用javascript,因此我想知道它是否在django中以某种方式是自动化的,或者为此目的我需要下载django-plugin或jquery-plugin.

感谢您的帮助,谢谢!

解决方法:

它不是django的内置东西,将需要一点点黑客攻击,但是我以前做过这种事情.

您将需要将jQuery AJAX请求附加到公司选择字段的onChange事件.当某人选择一家公司时,您查询数据库并询问该公司特定部门的列表.

编辑:

类似于以下javascript和django的东西可以工作:

$('#id_company').change(function(){
  $.POST('{% url some_url_name %}',
    {
      'company_id': $('#id_company').val()
    },
    function(data){
      if(data.valid){
        var d = '<select id="id_department" name="department">';
        $.each(data.records, function(k,v){
          d += '<option value="' + v.id + '">' + v.name +'</option>';
        });
        d += '</select>';
        $('#id_department').html(d);
      }
    }, 'json'
  );
});


def ajax_request(request, company_id):
  if request.is_ajax() and request.method == 'POST':
    data = simplejson.dumps(Department.objects.filter(company__id=company_id)
    return HttpResponse(data, mimetype='application/javascript')

标签:custom-fields,javascript,django
来源: https://codeday.me/bug/20191102/1994260.html