【问题标题】:Django Interactive lists based on Database query and user selection基于数据库查询和用户选择的 Django 交互式列表
【发布时间】:2018-03-16 04:52:32
【问题描述】:

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

第一个列出了从数据库查询(外部查询)返回的所有结果。在完成选择之前,第二个窗格是空白的。这是单选下拉菜单

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

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

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

【问题讨论】:

    标签: jquery python django


    【解决方案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 获取多选 HTML 组件,您可以使用 JSON 数据填充该组件,您将从前端的 Django 获取 Ajax 成功函数中的 jQuery。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多