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