Python 如何在自定义筛选后从DataTables内的数据库获取数据?

Python 如何在自定义筛选后从DataTables内的数据库获取数据?,python,django,datatables,datatables-1.10,Python,Django,Datatables,Datatables 1.10,我在Django项目中的表中使用DataTables。现在,情况如下: 存在组织(一个单独的组织模型) 每个组织都有一个项目(带有组织模型外键的项目模型) 组织模型与用户模型有很多关系,即一个用户可以同时是多个组织的成员 我的数据表目前看起来是这样的: 现在,我想要的是: 在my DataTable标头中添加另一个下拉筛选器,该筛选器具有选项“所有组织”和“我的组织”,将筛选该表以给出相应的结果(即显示所有组织,用户是其成员): 类似地,包括一个下拉列表以显示用户有权访问的所有项目

我在Django项目中的表中使用DataTables。现在,情况如下:

  • 存在组织(一个单独的组织模型)
  • 每个组织都有一个项目(带有组织模型外键的项目模型)
  • 组织模型与用户模型有很多关系,即一个用户可以同时是多个组织的成员
我的数据表目前看起来是这样的:

现在,我想要的是:

  • 在my DataTable标头中添加另一个下拉筛选器,该筛选器具有选项“所有组织”和“我的组织”,将筛选该表以给出相应的结果(即显示所有组织,用户是其成员):

  • 类似地,包括一个下拉列表以显示用户有权访问的所有项目:

现在我所知道的是,使用python,我可以使用
current\u user.organizations.All()
获取所有用户的组织,因为models.py将related\u name属性设置为
'organizations'
,并且组织通过许多字段与用户模型连接,如下所示:

#models.py
class Organization(SlugModel, RandomIDModel):
    users = models.ManyToManyField('accounts.User',
                           through='OrganizationRole',
                           related_name='organizations')
但我不知道如何在数据表中实现这一点。如何进行?请帮忙

以下是将table元素初始化为DataTable所需的JS:

  $('.datatable').DataTable({
    conditionalPaging: true,
    "dom": '<"table-search clearfix"f>t<"table-entries"i><"table-num"l><"table-pagination"p>',
    "language": {
      "emptyTable":     "{% trans "No data available in table" %}",
      "info":           "{% trans "Showing _START_ - _END_ of _TOTAL_" %}",
      "infoEmpty":      "{% trans "Showing 0 - 0 of 0" %}",
      "infoFiltered":   "{% trans "(filtered from _MAX_ total rows)" %}",
      "lengthMenu":     "{% trans "Show _MENU_ rows" %}",
      "search": '<div class="input-group"><span class="input-group-addon"><span class="glyphicon glyphicon-search"></span></span>',
      "searchPlaceholder": '{% trans "Search" %}',
      "zeroRecords":    "{% trans "No matching records found" %}",
      "paginate": {
        "next": '<span class="glyphicon glyphicon-triangle-right"></span>',
        "previous": '<span class="glyphicon glyphicon-triangle-left"></span>',
        "first":      "{% trans "First" %}",
        "last":       "{% trans "Last" %}"
      },
      "aria": {
        "sortAscending":  ": {% trans "activate to sort column ascending" %}",
        "sortDescending": ": {% trans "activate to sort column descending" %}"
      }
    },
});
$('.datatable').datatable({
条件年龄:对,
“dom”:“t”,
“语言”:{
“emptyTable”:“{%trans”表“%}”中没有可用数据,
“信息”:“{%trans”显示{u总计}的{u开始}-{u结束}”,
“infoEmpty”:“{%trans”显示0-0,共0“%}”,
“infoFiltered”:“{%trans”(从_MAX_total行中筛选)%”,
“长度菜单”:“{%trans”显示{u菜单\行”%}”,
“搜索”:“”,
“搜索占位符”:“{%trans”搜索“%}”,
“zeroRecords”:“{%trans”未找到匹配的记录“%}”,
“分页”:{
“下一个”:“”,
“以前的”:“,
“第一个”:“{%trans”第一个“%}”,
“last”:“{%trans”last“%}”
},
“咏叹调”:{
“排序设置”:“{%trans”激活以对列进行升序排序“%}”,
“sortDescending”:“{%trans”激活以对列降序进行排序“%}”
}
},
});
HTML模板:

<!-- Organization index table -->
<table class="table table-hover datatable" data-paging-type="simple">
  <thead>
   <tr>
      <th class="col-md-10">{% trans "Organization" %}</th>
      <th class="col-md-2 hidden-xs">{% trans "Projects" %}</th>
      <th class="hidden"><!-- Hidden archived status column --></th>
   </tr>
  </thead>
  {% for org in object_list %}
  <tr class="linked" onclick="window.document.location='{% url 'organization:dashboard' slug=org.slug %}';">
    <td>
      {% if org.logo %}
      <div class="org-logo">
        <span class="hidden">{{ org.name }}</span><!-- needed for sorting -->
        <img src="{{ org.logo }}" class="org-logo" alt="{{ org.name }}"/>
      </div>
      {% endif %}
      <div class="org-text">
        <h4><a href="{% url 'organization:dashboard' slug=org.slug %}">{{ org.name }}</a>
        {% if org.archived %}
          <span class="label label-danger">{% trans "Archived" %}</span>
        {% endif %}
        </h4>
        {% if org.description %}
          <p>{{ org.description }}</p>
        {% endif %}
      </div>
    </td>
    <td class="hidden-xs">{{ org.num_projects }}</td>
    <td class="hidden" data-filter="archived-{{ org.archived }}"></td>
  </tr>
  {% endfor %}
</table>

{%trans“组织”%}
{%trans“项目”%}
{对象列表%中的组织的百分比}
{%if org.logo%}
{{org.name}
{%endif%}
{%if org.archived%}
{%trans“已存档”%}
{%endif%}
{%if org.description%}
{{org.description}}

{%endif%} {{org.num_projects}} {%endfor%}

请询问是否需要其他信息。非常感谢。

@davidkonrad我刚刚用JS编辑了我的问题,JS将表初始化为DataTable。请询问是否需要除此之外的任何东西。谢谢。我可以解决它,但我不知道我应该采取什么第一步来开始解决这个问题。我是python和JavaScript的初学者。如果你能帮我开始解决这个问题,那就太好了@davidkonrad@davidkonrad我刚刚用JS编辑了我的问题,JS将表初始化为DataTable。请询问是否需要除此之外的任何东西。谢谢。我可以解决它,但我不知道我应该采取什么第一步来开始解决这个问题。我是python和JavaScript的初学者。如果你能帮我开始解决这个问题,那就太好了@戴维康拉德