【发布时间】:2019-04-25 07:36:38
【问题描述】:
在我的项目中,我成功使用 django_tables2 以实现服务器端处理。
唯一我不知道如何处理的是,在搜索之后,例如在为我的应用程序呈现客户端的模板中按名称进行搜索,尽管搜索结果会根据名称给出一些返回的结果,但它不是如果结果记录根据我的分页分布在多个页面中,则工作正常。
换句话说,当我点击2(我返回结果的第二页)时,应用程序会显示与客户有关的所有页面1 2 3 ...45 next (因为我想访问 /clients/ url,而不是 1 2 next 结构,仅用于自定义搜索数据。
当我单击下一个和上一个按钮时也会发生这种情况。
一个简单的解决方案可能是增加我的分页限制,以便在一页中显示所有可能的结果,但这种解决方案不适合大型结果集。
是否有任何解决方案可以避免在搜索栏中加载和显示所有页面而只保留我的自定义搜索结果?
下面是我的sn-ps。
url.py
url(r'^clients/$', views.client_list, name='client_list'),
models.py
class Client(models.Model):
name = models.CharField(max_length=50, verbose_name="Name")
surname = models.CharField(max_length=50, verbose_name="Surname")
activity = models.IntegerField(choices=ACTIVITY_OPTIONS, null=True,default=ACTIVE)
views.py
def client_list(request, template_name='clients/client_list.html'):
if request.method == 'POST':
search_string = request.POST['search_client']
current_client=Client.objects.filter(Q(activity=1) & Q(name=search_string)| Q(surname=search_string))
single_table=ClientTable(current_client)
RequestConfig(request).configure(single_table)
return render(request,template_name, {'single_table': single_table})
else:
clients=Client.objects.filter(activity=1)
table = ClientTable(clients)
RequestConfig(request).configure(table)
return render(request,template_name, {'table': table})
tables.py
class ClientTable(tables.Table):
class Meta:
#define the model
model = Client
exclude=('..')
template_name = 'django_tables2/bootstrap.html'
sequence = ("surname", "name",)
template
{% extends 'base.html' %}
{% load has_group %}
{% load render_table from django_tables2 %}
{% load bootstrap3 %}
{% load static %}
{% load staticfiles %}
{% block content %}
<div class="container">
<div class="row">
<div class="col-md-12">
<form class="well" method="post" action="">
{% csrf_token %}
Client Search:<br>
<input type="text" class="form-control" id="search" name="search_client">
<br>
{% buttons %}
<button type="submit" class="btn btn-primary">
{% bootstrap_icon "like" %} Submit
</button>
{% endbuttons %}
</form>
{% if single_table %}
{% render_table single_table %}
{% endif %}
{% if table %}
{% render_table table %}
{% endif %}
</div>
</div>
</div>
{% endblock %}
【问题讨论】:
标签: django pagination django-tables2