Django Interactive基于数据库查询和用户选择列出

时间:2017-10-04 17:35:39

标签: jquery python django

我想在Django中创建2个列表。

第一个列出了从db查询(外部查询)返回的所有结果。第二个窗格为空白,直到完成选择。这是单选下拉

用户在第一个下拉列表中选择一个项目后,将显示该选择的所有结果列表(基于另一个数据库查询)。此选择是多选。我不确定哪些元素允许Django中的多选

实施例。在第一个列表中选择城市,获取第二个列表中所有中心的列表,在第二个列表中选择多个中心并提交

被查询的信息来自外部数据库,我也可以使用API​​,但我的难点不在查询中,而是如何创建元素并根据选择更新它们。我也在使用django-bootstrap3

1 个答案:

答案 0 :(得分:1)

您可以使用Ajax通过数据库进行查询。

$.ajax({
      type: "POST",
      url: "/load_pane/" + $id, //specify your URL which you will create in Django with some ID selected by user from dropdown
      // Specify your CSRF token here, if you do a GET request then it's not needed
      data: $("#form").serialize() // You can send additional data if you want,
      success: function (data) {
          $("#second-pane").html . . . . // Populate second pane with JSON data. (HTML container with multi-select)

          }
         });

在Django中,您可以使用RESTful API,或者使用简单的方法 注册'/ loadpane'(路由中的URL,并在views.py中调用此函数)

def populate_pane(request, id):
       if request.POST:
            data = Model.objects(...) #Get whatever data you want using model
            return HttpResponse(json.dumps(data)) #This JSON will be processed by Ajax on front-end in the Multi-Select HTML component.

关注此链接 - https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select_multiple,您可以通过jQuery成功函数Ajax在前端从Django获取的JSON数据填充多选HTML组件。